vkt*_*vkt 0 php java encryption aes
我已经使用AES-256-ECB加密了 PHP 中的字符串。
$sString = "test"
$sEncryptionMethod = "AES-256-ECB";
$sEncryptionKey = "mysecretkey";
openssl_encrypt($sString, $sEncryptionMethod, $sEncryptionKey)
Run Code Online (Sandbox Code Playgroud)
我想使用 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));
Run Code Online (Sandbox Code Playgroud)
我看到以下错误?我们如何使用Java解密相同的内容?注意:(PHP 中的解密按预期工作)但我想在 Java 中执行此操作
Given final block not properly padded. Such issues can arise if a bad key is used during decryption.
Run Code Online (Sandbox Code Playgroud)
密钥必须正好是 256 位长。很明显,PHP 端正在做一些未指定的魔法巫毒"mysecretkey"
来获取 256 位密钥。Java 通常不会像 PHP 那样从事“用户似乎不知道他们在做什么,呃,我会在黑暗中疯狂刺杀”,这就是问题所在。
弄清楚“mysecretkey”是如何变成 256 位密钥的,并在 java 中复制它。
注意:欧洲央行非常不安全。听起来您对加密的了解还不够,以至于无法产生实际上很难被轻易破解的应用程序。
NB2:请注意,PHP 文档本身强烈建议“密钥”应该是某种加密衍生的 256 位安全源。openssl_encrypt
当您提供损坏的钥匙时,实际上会给您一个答案的事实有点令人皱眉。见在各种评论上openssl_encrypt PHP手册,明确突出了一些古怪的事情存在,但没有非常清楚真正说明什么PHP是在这里做。
归档时间: |
|
查看次数: |
97 次 |
最近记录: |