java 加密解密简单实现

上传人:飞*** 文档编号:40499827 上传时间:2018-05-26 格式:DOC 页数:12 大小:92.50KB
返回 下载 相关 举报
java 加密解密简单实现_第1页
第1页 / 共12页
java 加密解密简单实现_第2页
第2页 / 共12页
java 加密解密简单实现_第3页
第3页 / 共12页
java 加密解密简单实现_第4页
第4页 / 共12页
java 加密解密简单实现_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《java 加密解密简单实现》由会员分享,可在线阅读,更多相关《java 加密解密简单实现(12页珍藏版)》请在金锄头文库上搜索。

1、java 加密解密简单实现加密解密简单实现加密算法有很多种:这里只大约列举几例:1:消息摘要:(数字指纹):既对一个任意长度的一个数据块进行计算,产生 一个唯一指纹。MD5/SHA1 发送给其他人你的信息和摘要,其他人用相同的加密方法得到摘要,最后进行比 较摘要是否相同。2:单匙密码体制:DES:比较简便高效,密钥简短,加解密速度快,破译极其困难, 但其安全性依赖于密匙的安全性。 DES(Data Encryption Standard)是发明最早的最广泛使用的分组对称加密算 法。DES 算法的入口参数有三个:Key、Data、Mode。其中 Key 为 8 个字节共 64 位,是 DES 算

2、法的工作密钥;Data 也为 8 个字节 64 位,是要被加密或被解密 的数据;Mode 为 DES 的工作方式,有两种:加密或解密3:数字签名:就是信息发送者用其私钥对从所传报文中提取出的特征数据(或称 数字指纹)进行 RSA 算法操作,以保证发信人无法抵赖曾发过该信息(即不可 抵赖性),同时也确保信息报文在经签名后末被篡改(即完整性)。当信息接 收者收到报文后,就可以用发送者的公钥对数字签名进行验证。 代表:DSA4:非对称密匙密码体制(公匙体系):加密密匙不同于解密密匙,加密密匙公 之于众,谁都可以使用,解密密匙只有解密人自己知道。代表:RSA下面是对上面几个例子进行的简单实现:Java

3、 代码 1. package test; 2. import java.io.FileInputStream; 3. import java.io.FileOutputStream; 4. import java.io.IOException; 5. import java.io.ObjectInputStream; 6. import java.io.ObjectOutputStream; 7. import java.security.*; 8. import javax.crypto.Cipher; 9. import javax.crypto.KeyGenerator; 10.impo

4、rt javax.crypto.SecretKey; 11./* 12. * 加密解密 13. * 14. * author shy.qiu 15. * since http:/ 16. */ 17.public class CryptTest 18. /* 19. * 进行 MD5 加密 20. * 21. * param info 22. * 要加密的信息 23. * return String 加密后的字符串 24. */ 25. public String encryptToMD5(String info) 26. byte digesta = null; 27. try 28. /

5、得到一个 md5 的消息摘要 29. MessageDigest alga = MessageDigest.getInstance(“MD5 “); 30. / 添加要进行计算摘要的信息 31. alga.update(info.getBytes(); 32. / 得到该摘要 33. digesta = alga.digest(); 34. catch (NoSuchAlgorithmException e) 35. e.printStackTrace(); 36. 37. / 将摘要转为字符串 38. String rs = byte2hex(digesta); 39. return rs;

6、 40. 41. /* 42. * 进行 SHA 加密 43. * 44. * param info 45. * 要加密的信息 46. * return String 加密后的字符串 47. */ 48. public String encryptToSHA(String info) 49. byte digesta = null; 50. try 51. / 得到一个 SHA-1 的消息摘要 52. MessageDigest alga = MessageDigest.getInstance(“SHA -1“); 53. / 添加要进行计算摘要的信息 54. alga.update(info

7、.getBytes(); 55. / 得到该摘要 56. digesta = alga.digest(); 57. catch (NoSuchAlgorithmException e) 58. e.printStackTrace(); 59. 60. / 将摘要转为字符串 61. String rs = byte2hex(digesta); 62. return rs; 63. 64. / / / 65. /* 66. * 创建密匙 67. * 68. * param algorithm 69. * 加密算法,可用 DES,DESede,Blowfish 70. * return Secret

8、Key 秘密(对称)密钥 71. */ 72. public SecretKey createSecretKey(String algorithm) 73. / 声明 KeyGenerator 对象 74. KeyGenerator keygen; 75. / 声明 密钥对象 76. SecretKey deskey = null; 77. try 78. / 返回生成指定算法的秘密密钥的 KeyGenerator 对象 79. keygen = KeyGenerator.getInstance(algorithm); 80. / 生成一个密钥 81. deskey = keygen.gene

9、rateKey(); 82. catch (NoSuchAlgorithmException e) 83. e.printStackTrace(); 84. 85. / 返回密匙 86. return deskey; 87. 88. /* 89. * 根据密匙进行 DES 加密 90. * 91. * param key 92. * 密匙 93. * param info 94. * 要加密的信息 95. * return String 加密后的信息 96. */ 97. public String encryptToDES(SecretKey key, String info) 98. /

10、定义 加密算法,可用 DES,DESede,Blowfish 99. String Algorithm = “DES“; 100. / 加密随机数生成器 (RNG),(可以不写) 101. SecureRandom sr = new SecureRandom(); 102. / 定义要生成的密文 103. byte cipherByte = null; 104. try 105. / 得到加密/解密器 106. Cipher c1 = Cipher.getInstance(Algorithm); 107. / 用指定的密钥和模式初始化 Cipher 对象 108. / 参数: (ENCRYPT

11、_MODE, DECRYPT_MODE, WRAP_MODE,UNWRAP_MODE) 109. c1.init(Cipher.ENCRYPT_MODE, key, sr); 110. / 对要加密的内容进行编码处理, 111. cipherByte = c1.doFinal(info.getBytes(); 112. catch (Exception e) 113. e.printStackTrace(); 114. 115. / 返回密文的十六进制形式 116. return byte2hex(cipherByte); 117. 118. /* 119. * 根据密匙进行 DES 解密 1

12、20. * 121. * param key 122. * 密匙 123. * param sInfo 124. * 要解密的密文 125. * return String 返回解密后信息 126. */ 127. public String decryptByDES(SecretKey key, String sInfo) 128. / 定义 加密算法, 129. String Algorithm = “DES“; 130. / 加密随机数生成器 (RNG) 131. SecureRandom sr = new SecureRandom(); 132. byte cipherByte = null; 133.

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 研究报告 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号