我正在使用下面的代碼來實現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