我使用下面的代码用ECB和PKSC5 Padding实现Triple DES编码。我使用的密钥存储在raw文件夹中名为key的文件中。我得到以下异常 -
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;
}
答案 0 :(得分:0)
您传递了一个长度为1024的数组作为密钥。密钥必须是长度16(128位)或24(192位)。 1024不是这些数字。
如果您正在进行阅读,请在阅读后将阵列调整到合适的大小。