我正在使用下面的代码来实现ECB和PKSC5 Padding的三重DES编码。我使用的密钥存储在一个名为原folder.I重点正在逐渐低于exception-三重DES编码 - java.security.InvalidKeyException:密钥大小必须是128或192位
java.security.InvalidKeyException: key size must be 128 or 192 bits
为什么会出现这种异常,我在哪里去了?
public byte[] encrypt(String message) throws Exception {
getResources().getIdentifier("key",
"raw", getPackageName());
byte[] bytes = new byte[1024];
try {
BufferedInputStream buf = new BufferedInputStream(getResources().openRawResource(
getResources().getIdentifier("key",
"raw", getPackageName())));
buf.read(bytes, 0, bytes.length);
buf.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
final SecretKey key = new SecretKeySpec(bytes, "DESede/ECB/PKCS5Padding");
final Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE,key);
final byte[] plainTextBytes = message.getBytes("utf-8");
final byte[] cipherText = cipher.doFinal(plainTextBytes);
return cipherText;
}
该异常不可能更清晰。 –
@JamesKPolk我无法将字符串转换为以上例外的cipherText bcoz ..我不明白你的意思是“这个例外不可能变得更清楚”。 – Bhuvi
@Bhuvi不要使用ECB模式,这是不安全的,请参阅[ECB模式](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Electronic_Codebook_.28ECB.29),向下滚动到企鹅。 取而代之的是将CBC模式与随机IV一起使用,只是将加密数据与IV一起用于解密。另外3DES不能用于新作品。 – zaph