Java 加密解密之对称加密算法DESede

上传人:油条 文档编号:33202397 上传时间:2018-02-14 格式:DOCX 页数:7 大小:30.79KB
返回 下载 相关 举报
Java 加密解密之对称加密算法DESede_第1页
第1页 / 共7页
Java 加密解密之对称加密算法DESede_第2页
第2页 / 共7页
Java 加密解密之对称加密算法DESede_第3页
第3页 / 共7页
Java 加密解密之对称加密算法DESede_第4页
第4页 / 共7页
Java 加密解密之对称加密算法DESede_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《Java 加密解密之对称加密算法DESede》由会员分享,可在线阅读,更多相关《Java 加密解密之对称加密算法DESede(7页珍藏版)》请在金锄头文库上搜索。

1、Java 加密解密之对称加密算法 DESede本文转自网络DESede 即三重 DES 加密算法,也被称为 3DES 或者 Triple DES。使用三(或两)个不同的密钥对数据块进行三次(或两次)DES 加密(加密一次要比进行普通加密的三次要快)。三重 DES 的强度大约和 112-bit 的密钥强度相当。通过迭代次数的提高了安全性,但同时也造成了加密效率低的问题。正因 DESede 算法效率问题,AES 算法诞生了。 (详见: Java 加密解密之对称加密算法 AES )到目前为止,还没有人给出攻击三重 DES 的有效方法。对其密钥空间中密钥进行蛮干搜索,那么由于空间太大,这实际上是不可行

2、的。若用差分攻击的方法,相对于单一 DES 来说复杂性以指数形式增长。三重 DES 有四种模型(a)DES-EEE3,使用三个不同密钥,顺序进行三次加密变换。(b)DES-EDE3,使用三个不同密钥,依次进行加密-解密-加密变换。(c)DES-EEE2,其中密钥 K1=K3,顺序进行三次加密变换。(d)DES-EDE2, 其中密钥 K1=K3,依次进行加密-解密-加密变换。JDK 对 DESede 算法的支持密钥长度:112 位/168 位工作模式:ECB/CBC/PCBC/CTR/CTS/CFB/CFB8 to CFB128/OFB/OBF8 to OFB128填充方式:Nopadding/

3、PKCS5Padding/ISO10126Padding/工作模式和填充方式请参考: JAVA 加密解密基础十六进制工具类 Hex.java,见: java byte 数组与十六进制字符串互转DESede 加密解密的 java 实现:DESede .javaJava 代码 1. import java.security.Key; 2. 3. import javax.crypto.Cipher; 4. import javax.crypto.KeyGenerator; 5. import javax.crypto.SecretKey; 6. import javax.crypto.Secret

4、KeyFactory; 7. import javax.crypto.spec.DESedeKeySpec; 8. 9. /* 10. * DESede Coder 11. * secret key length: 112/168 bit, default: 168 bit 12. * mode: ECB/CBC/PCBC/CTR/CTS/CFB/CFB8 to CFB128/OFB/OBF8 to OFB128 13. * padding: Nopadding/PKCS5Padding/ISO10126Padding/ 14. * author Aub 15. * 16. */ 17. pu

5、blic class DESedeCoder 18. 19. /* 20. * 密钥算法 21. */ 22. private static final String KEY_ALGORITHM = DESede; 23. 24. / private static final String DEFAULT_CIPHER_ALGORITHM = DESede/ECB/PKCS5Padding; 25. private static final String DEFAULT_CIPHER_ALGORITHM = DESede/ECB/ISO10126Padding; 26. 27. /* 28.

6、* 初始化密钥 29. * 30. * return byte 密钥 31. * throws Exception 32. */ 33. public static byte initSecretKey() throws Exception 34. /返回生成指定算法的秘密密钥的 KeyGenerator 对象 35. KeyGenerator kg = KeyGenerator.getInstance(KEY_ALGORITHM); 36. /初始化此密钥生成器,使其具有确定的密钥大小 37. kg.init(168); 38. /生成一个密钥 39. SecretKey secretKey

7、 = kg.generateKey(); 40. return secretKey.getEncoded(); 41. 42. 43. /* 44. * 转换密钥 45. * 46. * param key 二进制密钥 47. * return Key 密钥 48. * throws Exception 49. */ 50. private static Key toKey(byte key) throws Exception 51. /实例化 DES 密钥规则 52. DESedeKeySpec dks = new DESedeKeySpec(key); 53. /实例化密钥工厂 54. S

8、ecretKeyFactory skf = SecretKeyFactory.getInstance(KEY_ALGORITHM); 55. /生成密钥 56. SecretKey secretKey = skf.generateSecret(dks); 57. return secretKey; 58. 59. 60. /* 61. * 加密 62. * 63. * param data 待加密数据 64. * param key 密钥 65. * return byte 加密数据 66. * throws Exception 67. */ 68. public static byte en

9、crypt(byte data,Key key) throws Exception 69. return encrypt(data, key,DEFAULT_CIPHER_ALGORITHM); 70. 71. 72. /* 73. * 加密 74. * 75. * param data 待加密数据 76. * param key 二进制密钥 77. * return byte 加密数据 78. * throws Exception 79. */ 80. public static byte encrypt(byte data,byte key) throws Exception 81. re

10、turn encrypt(data, key,DEFAULT_CIPHER_ALGORITHM); 82. 83. 84. 85. /* 86. * 加密 87. * 88. * param data 待加密数据 89. * param key 二进制密钥 90. * param cipherAlgorithm 加密算法/工作模式/填充方式 91. * return byte 加密数据 92. * throws Exception 93. */ 94. public static byte encrypt(byte data,byte key,String cipherAlgorithm) t

11、hrows Exception 95. /还原密钥 96. Key k = toKey(key); 97. return encrypt(data, k, cipherAlgorithm); 98. 99. 100. /* 101. * 加密 102. * 103. * param data 待加密数据 104. * param key 密钥 105. * param cipherAlgorithm 加密算法/工作模式/填充方式 106. * return byte 加密数据 107. * throws Exception 108. */ 109. public static byte enc

12、rypt(byte data,Key key,String cipherAlgorithm) throws Exception 110. /实例化 111. Cipher cipher = Cipher.getInstance(cipherAlgorithm); 112. /使用密钥初始化,设置为加密模式 113. cipher.init(Cipher.ENCRYPT_MODE, key); 114. /执行操作 115. return cipher.doFinal(data); 116. 117. 118. 119. 120. /* 121. * 解密 122. * 123. * param

13、 data 待解密数据 124. * param key 二进制密钥 125. * return byte 解密数据 126. * throws Exception 127. */ 128. public static byte decrypt(byte data,byte key) throws Exception 129. return decrypt(data, key,DEFAULT_CIPHER_ALGORITHM); 130. 131. 132. /* 133. * 解密 134. * 135. * param data 待解密数据 136. * param key 密钥 137. * return byte 解密数据 138. * throws Exception 139. */ 140. public static byte decrypt(byte data,Key key) throws Exception 141. retu

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

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