3des加解的key

xiaoxiao2021-02-27  442

做需求时对面给了一个32位的passwd,直接用

SecretKeySpec securekey=new SecretKeySpec(passwd.getBytes(),"DESede");

报错:java.security.InvalidKeyException: Invalid key length: 32 bytes

            DESedeKeySpec dks = new DESedeKeySpec(passwd.getBytes(),"1"));

            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");

            SecretKey securekey = keyFactory.generateSecret(dks); 

程序不报错,但加密的结果不一样。

问了后知道先将passw进行64位转码

BASE64Decoder base64decoder = new BASE64Decoder(); byte[] passwdByte = base64decoder.decodeBuffer(passwd); 

SecretKeySpec securekey=new SecretKeySpec(passwdByte,"DESede");

这样既不会报错。加密的结果也一样了

转载请注明原文地址: https://www.6miu.com/read-4687.html

最新回复(0)