CryptoJS中AES加密与PHP7的相互转换
js中加密代码如下:
1 2 3 4 5 6 7 8 |
function encrypt(src, cryptoKey) { var key = window.CryptoJS.enc.Utf8.parse(cryptoKey); var encPassword = window.CryptoJS.AES.encrypt(src, key, { mode: window.CryptoJS.mode.ECB, padding: window.CryptoJS.pad.Pkcs7 }); return encPassword.ciphertext.toString().toUpperCase(); } |
php中相应代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
/** * 加密字符串 */ function encrypt($data, $key) { $chiperRaw = openssl_encrypt($data, 'AES-128-ECB', $key, OPENSSL_RAW_DATA); return strtoupper(bin2hex($chiperRaw)); } /** * 解密字符串 */ public function decrypt($string, $key) { return openssl_decrypt(hex2bin($string), 'AES-128-ECB', $key, OPENSSL_RAW_DATA); } |
特别注意 bin2hex 、hex2bin 这个函数,
hex2bin() 函数把十六进制值的字符串转换为 ASCII 字符。
bin2hex() 函数把 ASCII 字符的字符串转换为十六进制值。
近期评论