【发布时间】:2020-11-11 02:13:45
【问题描述】:
我在 JS 中生成加密时遇到问题, 我有这样的 PHP 加密生成器:
$secret_key = 'thisIsK3y';
$secret_iv = 'tHis1s1v';
$output = false;
$encrypt_method = "AES-256-CBC";
$key = hash( 'sha256', $secret_key );
$iv = substr( hash( 'sha256', $secret_iv ), 0, 16 );
if( $action == 'e' )
{
$output = base64_encode( openssl_encrypt( $string, $encrypt_method, $key, 0, $iv ) );
}
else if( $action == 'd')
{
$output = openssl_decrypt( base64_decode( $string ), $encrypt_method, $key, 0, $iv );
}
return $output;
然后我尝试使用 CryptoJS 在 React 上将 JS 转换为 JS:
import sha256 from "crypto-js/sha256";
import Base64 from "crypto-js/enc-base64";
import AES from "crypto-js/aes";
let secret_key = "thisIsK3y";
let secret_iv = "tHis1s1v";
let output = false;
let encrypt_method = "AES-256-CBC";
let key = sha256(secret_key);
let iv = String(sha256(secret_iv)).substr(0, 16);
if (action == "e") { // encrypt action
output = AES.encrypt("test", Utf8.parse(key), {
iv: Utf8.parse(iv),
}).toString();
alert(Base64.parse(output));
}
然后警报显示此加密:fd0337c029ad25c240316a1d61db9144,然后我尝试在我的 php 中解密。但它显示纯文本似乎是不可打印的 ascii
b"}¦7▀À4█ÍØ█ù6ÒM§Ú¡]ÙW[¸^8"
还有 PHP 通知:
PHP 通知:iconv():在输入字符串中检测到非法字符 /var/www/html/blabla/vendor/symfony/var-dumper/Dumper/AbstractDumper.php 在第 203 行
谁能帮帮我?
【问题讨论】:
标签: javascript node.js reactjs encryption cryptojs