[英]Decrypt using AES-256-ECB in Java
我已經使用AES-256-ECB加密了 PHP 中的字符串。
$sString = "test"
$sEncryptionMethod = "AES-256-ECB";
$sEncryptionKey = "mysecretkey";
openssl_encrypt($sString, $sEncryptionMethod, $sEncryptionKey)
我想使用 Java/Scala 解密相同的文件嗎?
String secret = "mysecretkey";
SecretKeySpec skeySpec = new SecretKeySpec(encKey.getBytes("UTF-8"), "AES");
byte[] decodedValue = Base64.getDecoder.decode(token);
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5PADDING");
int decryptMode = Cipher.DECRYPT_MODE;
cipher.init(decryptMode, skeySpec);
new String(cipher.doFinal(decodedValue));
我看到以下錯誤? 我們如何使用Java解密相同的內容? 注意:(PHP 中的解密按預期工作)但我想在 Java 中執行此操作
Given final block not properly padded. Such issues can arise if a bad key is used during decryption.
密鑰必須正好是 256 位長。 很明顯,PHP "mysecretkey"
在對"mysecretkey"
執行一些未指定的魔術巫術以獲取 256 位密鑰。 Java 通常不會像 PHP 那樣從事“用戶似乎不知道他們在做什么,呃,我會在黑暗中瘋狂刺殺”,這就是問題所在。
弄清楚“mysecretkey”是如何變成 256 位密鑰的,並在 java 中復制它。
注意:歐洲央行非常不安全。 聽起來您對加密的了解還不夠,以至於無法產生實際上難以輕易破解的應用程序。
NB2:請注意,PHP 文檔本身強烈建議“密鑰”應該是某種加密衍生的 256 位安全源。 當您提供損壞的密鑰時, openssl_encrypt
實際上會給您一個答案,這一事實openssl_encrypt
。 見在各種評論上openssl_encrypt PHP手冊,明確突出了一些古怪的事情存在,但沒有非常清楚真正說明什么PHP是在這里做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.