已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MD5:用于计算出一段不可逆向计算的数值,以此来验证该文件是否被修改的.它可以帮你验证从网上下载下来的windows7安装程序是否与发布人发布的东西完全一致,也就是帮助你验证这个程序有没有经过他人(非发布人)的修改。/* * MD5加密算法 * author tfq * datetime 2011-10-13 */ public class MD5Util /* * MD5值 */ public static String encryptMD5(String inStr) MessageDigest md5 = null; try md5 = MessageDigest.getInstance(MD5); catch (Exception e) System.out.println(e.toString(); e.printStackTrace(); return ; char charArray = inStr.toCharArray(); byte byteArray = new bytecharArray.length; for (int i = 0; i charArray.length; i+) byteArrayi = (byte) charArrayi; byte md5Bytes = md5.digest(byteArray); StringBuffer hexValue = new StringBuffer(); for (int i = 0; i md5Bytes.length; i+) int val = (int) md5Bytesi) & 0xff; if (val 16) hexValue.append(0); hexValue.append(Integer.toHexString(val); return hexValue.toString(); /* * MD5加密 */ public static String decryptMD5(String inStr) char a = inStr.toCharArray(); for (int i = 0; i a.length; i+) /按位异或 ai = (char) (ai t); String s = new String(a); return s; / 可逆的MD5 加密 public static void main(String args) String s = new String(zhonghuatengfei); System.out.println(加密前: + s); /生成MD5值 String encryptResult = encryptMD5(s); System.out.println(MD5后: + encryptResult); /加密 String decryptResult = decryptMD5(encryptResult); System.out.println(MD5后加密: + decryptResult); /解密 String decryptResult2 = decryptMD5(decryptResult); System.out.println(解密为MD5后的: + decryptResult2); AES: 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。public class TestAES /* * AES 加密 * param content * param password * return */public static byte encrypt(String content, String password) try KeyGenerator kgen = KeyGenerator.getInstance(AES); kgen.init(128, new SecureRandom(password.getBytes(); SecretKey secretKey = kgen.generateKey(); byte enCodeFormat = secretKey.getEncoded(); SecretKeySpec key = new SecretKeySpec(enCodeFormat, AES); Cipher cipher = Cipher.getInstance(AES); byte byteContent = content.getBytes(utf-8); cipher.init(Cipher.ENCRYPT_MODE, key); byte result = cipher.doFinal(byteContent); return result; catch (NoSuchAlgorithmException e) e.printStackTrace(); catch (NoSuchPaddingException e) e.printStackTrace(); catch (InvalidKeyException e) e.printStackTrace(); catch (UnsupportedEncodingException e) e.printStackTrace(); catch (IllegalBlockSizeException e) e.printStackTrace(); catch (BadPaddingException e) e.printStackTrace(); return null; /*解密* param content * param password * return */ public static byte decrypt(byte content, String password) try KeyGenerator kgen = KeyGenerator.getInstance(AES); kgen.init(128, new SecureRandom(password.getBytes(); SecretKey secretKey = kgen.generateKey(); byte enCodeFormat = secretKey.getEncoded(); SecretKeySpec key = new SecretKeySpec(enCodeFormat, AES); Cipher cipher = Cipher.getInstance(AES); cipher.init(Cipher.DECRYPT_MODE, key); byte result = cipher.doFinal(content); return result; catch (NoSuchAlgorithmException e) e.printStackTrace(); catch (NoSuchPaddingException e) e.printStackTrace(); catch (InvalidKeyException e) e.printStackTrace(); catch (IllegalBlockSizeException e) e.printStackTrace(); catch (BadPaddingException e) e.printStackTrace(); return null; /*加密后转化成十六进制 * param buf * return */ public static String parseByte2HexStr(byte buf) StringBuffer sb = new StringBuffer(); for (int i = 0; i buf.length; i+) String hex = Integer.toHexString(bufi & 0xFF); if (hex.length() = 1) hex = 0 + hex; sb.append(hex.toUpperCase(); return sb.toString(); /*十六进制转换成bytes * param hexStr * return */ public static byte parseHexStr2Byte(String hexStr) if (hexStr.length() 1) return null; byte result = new bytehexStr.length()/2; for (int i = 0;i hexStr.length()/2; i+) int high = Integer.parseInt(hexStr.substring(i*2, i*2+1), 16); int low = Integer.parseInt(hexStr.substring(i*2+1, i*2+2), 16); resulti = (byte) (high * 16 + low); return result; public static void main(String args) String content = pass1234; /密码String password = Huateng.gd.Oceans Fourteen.DWMNTH2CJFLCWL; System.out.println(原文: + content); byte encryptResult = encrypt(content, password); String encryptResultStr = parseByte2HexStr(encryptResult); System.out.println(加密后: + encryptResultStr); byte decryptFrom = parseHexStr2Byte(encryptResultStr); byte decryptResult = decrypt(decryptFrom,password); System.out.println(解密后: + new String(decryptResult); DES: 现在已经不是一种安全的加密方法,主要因为它使用的56位密钥过短。1999年1月,与电子前哨基金会合作,在22小时15分钟内即公开破解了一个DES密钥。也有一些分析报告提出了该算法的理论上的弱点,虽然在实际中难以应用。为了提供实用所需的安全性,可以使用DES的派生算法3DES来进行加密,虽然3DES也存在理论上的攻击方法。在2001年,DES作为一个标准已经被高级加密标准(AES)所取代。另外,DES已经不再作为国家标准科技协会(前国家标准局)的一个标准。public class TestDES private final static String DES = DES; public static void main(String args) throws Exception String data = huatengddej; String key = yufdfd.33; System.out.println(原文: + data); String encryptResult = encrypt(data, key); System.err.println(DES加密: + encryptResult); String decryptResult = decrypt(encryptResult,key); System.err.println(DES解密: + decryptResult); public static String encrypt(String data, String key) throws Exception byte bt = encrypt(data.getBytes(), key.getBytes(); String strs = new BASE64Encoder().encode(bt); return strs; public static String decrypt(String data, String key) throws IOException, Exception if (data = null) return null; BASE64Decoder decoder = new BASE64Decoder(); byte buf = decoder.decodeBuffer(data); byte bt = decrypt(buf,key.getBytes(); return new String(bt); private static byte encrypt(byte data, byte key) throws Exception SecureRandom sr = new SecureRandom(); DESKeySpec dks = new DESKe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 福建省福州市台江区九校2025-2026学年高一下学期期中考试生物试题
- 河南省名校2026届高三年级5月押题导向卷(一)英语试题
- 静脉导管维护专家共识2026
- 2025年建筑行业数字化转型标杆企业参观
- 直播售后纠纷快速处理方案
- 特色小镇文化创意产业集群建设2025年市场潜力与风险控制分析
- 2026年碳捕捉技术在工业应用创新报告
- 初中英语写作中递进逻辑的渐进式训练课题报告教学研究课题报告
- 2026年农业灌溉设备创新设计报告
- 2026年激光雷达自动驾驶报告及未来五至十年高精地图报告
- 吉他基础知识课件
- 煤矿探放水实操培训课件
- 建筑工程企业中层管理人员培训体系优化路径探索-以HX企业为样本的深度剖析
- 自我探索之旅-发现另一个自己+说课课件-2025-2026学年高二上学期心理健康主题班会
- 山东滨州市无棣县财金投资集团有限公司招聘笔试题库2026
- 机电安装施工安全专项方案
- 数学教师专业成长培训
- 2025年6月浙江省高考历史试卷(含答案详解)
- 母婴护理师管理手册
- 绵阳地理考试题及答案
- 不锈钢水箱生产质量标准手册
评论
0/150
提交评论