本主題的堆棧溢出有很多線程,並且始終使用相同的解決方案,但這些方法對我無效。我正在尋找一種方法來解密值byte[]
加密並返回byte[]
decodedBytes。密碼功能:錯誤的最終塊長度Android Studio
用AESCrypt方法。我用compile 'com.scottyab:aescrypt:0.0.1'
private void testAES() {
try {
final byte[] encrypted = Base64.decode("R3JhbmRlIFZpY3RvaXJlICE=", Base64.NO_WRAP);
byte[] keyBytes = Base64.decode("L/91ZYrliXvmhYt9FKEkkDDni+PzcnOuV9cikm188+4=", Base64.NO_WRAP);
final byte[] ivBytes = Base64.decode("gqjFHI+YQiP7XYEfcIEJHw==".getBytes(), Base64.NO_WRAP);
final SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "AES");
byte[] decodedBytes = AESCrypt.decrypt(keySpec, ivBytes, encrypted);
} catch (Exception e) {
e.printStackTrace();
}
}
隨着值密碼,我用它那樣。
private static byte[] testCipher() {
try {
final byte[] encrypted = Base64.decode("R3JhbmRlIFZpY3RvaXJlICE=", Base64.NO_WRAP);
byte[] keyBytes = Base64.decode("L/91ZYrliXvmhYt9FKEkkDDni+PzcnOuV9cikm188+4=", Base64.NO_WRAP);
byte[] ivBytes = Base64.decode("gqjFHI+YQiP7XYEfcIEJHw==".getBytes(), Base64.NO_WRAP);
final IvParameterSpec ivSpecForData = new IvParameterSpec(ivBytes);
SecretKeySpec decodedKeySpec = new SecretKeySpec(keyBytes, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, decodedKeySpec, ivSpecForData);
byte[] decodedBytes = cipher.doFinal(encrypted); // I have the error here //
return decodedBytes;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
無論我做什麼,我有百達了同樣的錯誤:
error:1e06b07b:Cipher functions:EVP_DecryptFinal_ex:WRONG_FINAL_BLOCK_LENGTH
我試圖把在Cipher.getInstance(AES/CBC/NoPadding,AES/CBC/PKCS5Padding,AES/CBC/PKCS7Padding),但沒有任何變化。 你有什麼想法來幫助我嗎?
歡迎來到Stack Overflow!填充錯誤可能意味着任何數量的事情:錯誤的密鑰,錯誤的編碼,不完整/過密的密文。您應該顯示加密代碼並給出您使用的示例值。否則,這將是明顯猜測這個代碼(或加密代碼)可能是錯誤的。總之,請創建一個[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 –