Java 加密解密之对称加密算法DESede 本文转自网络 DESede 即三重DES 加密算法,也被称为3DES 或者Triple DES。使用三(或两)个不同的密钥对数据块进行三次(或两次)DES 加密(加密一次要比进行普通加密的三次要快)。三重DES 的强度大约和 112-bit 的密钥强度相当。通过迭代次数的提高了安全性,但同时也造成了加密效率低的问题。正因 DESede 算法效率问题,AES 算法诞生了。 (详见: Jav a 加密解密之对称加密算法AES ) 到目前为止,还没有人给出攻击三重DES 的有效方法。对其密钥空间中密钥进行蛮干搜索,那么由于空间太大,这实际上是不可行的。若用差分攻击的方法,相对于单一 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/PKCS5Padding/ISO10126Padding/ 工作模式和填充方式请参考: JAVA 加密解密基础 十六进制工具类 Hex .jav a,见: jav a by te 数组与十六进制字符串互转 DESede 加密解密的 jav a 实现: DESede .jav a Java 代码 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.SecretKeyFactory; 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. public 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. pri...