Java – OpenSSL decryption returns false
•
Java
I try to encrypt the password in Java and decrypt it in PHP using opensll I got nothing but Boole
This is my java code:
private String encryptAES(String text) throws Exception
{
String key = "something-random";
SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes(),"AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE,skeySpec);
byte[] encrypted = cipher.doFinal(text.getBytes());
String encrypttext = Base64.encodeToString(encrypted,Base64.URL_SAFE|Base64.NO_WRAP);
Log.v("ENCRYPTED",encrypttext); // 6sAfStQJ2zNUJLdRgXZsTA==
return encrypttext;
}
Attempt to decrypt password in PHP:
$output = openssl_decrypt("6sAfStQJ2zNUJLdRgXZsTA==","AES-256-ECB","something-random");
var_dump($output); // bool(false)
Given error from opensll:
error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt
Who knows what's wrong? I tried to look for mistakes, but everything was with node JS related
Based on the answer of @ randomseed, I changed the PHP code to the following:
$output = openssl_decrypt(base64_decode("6sAfStQJ2zNUJLdRgXZsTA=="),"something-random");
This causes an error:
error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length
The edited decryption function also returns bool (false)
Solution
After AES encryption, your encrypttext string is Base64 encoded Before decrypting, you need to enter Base64_ Decode() is an input string
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码
