java – OpenSSL解密返回false
发布时间:2020-12-15 02:11:29 所属栏目:Java 来源:网络整理
导读:我尝试使用 Java加密密码并使用OpenSLL在 PHP中解密.除了布尔(假),我什么也得不到. 这是我的Java代码: private String encryptAES(String text) throws Exception{ String key = "something-random"; SecretKeySpec skeySpec = new SecretKeySpec(key.getBy
我尝试使用
Java加密密码并使用OpenSLL在
PHP中解密.除了布尔(假),我什么也得不到.
这是我的Java代码: 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; } 试图在PHP中解密密码: $output = openssl_decrypt("6sAfStQJ2zNUJLdRgXZsTA==","AES-256-ECB","something-random"); var_dump($output); // bool(false) 来自openSLL的给定错误: error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt 有谁知道什么是错的?我试图寻找错误,但一切都与node.js有关 基于@RandomSeed的回答,我将PHP代码更改为以下内容: $output = openssl_decrypt(base64_decode("6sAfStQJ2zNUJLdRgXZsTA=="),"something-random"); 这会导致错误: error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length 这个编辑过的解密函数也返回bool(false) 解决方法
经过AES加密后,您的encrypttext字符串是Base64编码的.在解密之前,您需要输入
base64_decode() 个输入字符串.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |