前端CryptoJS-AES加解密 对应php的AES-128-CBC加解密踩坑(java也相同加解密)
短信预约 -IT技能 免费直播动态提醒
前端部分注意看填充是pkcs7
有个前提,要看前端有没有转成hex格式,如果没转,php那边就不需要调用特定函数转hex格式的
const keyStr = '5hOwdHxpW0GOciqZ'; const iv = '0102030405060708'; //加密 function Encrypt(word) { let key = CryptoJS.enc.Utf8.parse(keyStr); let class="lazy" data-srcs = CryptoJS.enc.Utf8.parse(word); let encrypted = CryptoJS.AES.encrypt(class="lazy" data-srcs, key, { iv: CryptoJS.enc.Utf8.parse(iv), mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); let hexStr = encrypted.ciphertext.toString().toUpperCase(); return hexStr.toString(); // encrypted.ciphertext.toString(); // 返回hex格式的密文 //encrypted.toString(); //此方式返回base64格式密文 } //解密 function Decrypt(word) { let key = CryptoJS.enc.Utf8.parse(keyStr); let encryptedHexStr = CryptoJS.enc.Hex.parse(word); var class="lazy" data-srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr); let decrypt = CryptoJS.AES.decrypt(class="lazy" data-srcs, key, { iv: CryptoJS.enc.Utf8.parse(iv), mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); return CryptoJS.enc.Utf8.stringify(decrypt).toString(); }
后端php代码
if (!function_exists('encrypt')) { //加密 function encrypt($data, $method = 'AES-128-CBC', $typeNum = 1) { $key = '5hOwdHxpW0GOciqZ'; $iv = '0102030405060708'; $a = openssl_encrypt($data, $method, $key, $typeNum, $iv); // $base64 = base64_encode(openssl_encrypt($data, $method, $key, $typeNum, $iv)); //先转hex格式 再转大写模式 return strtoupper(bin2hex($a)); }}if (!function_exists('decrypt')) { //解密 这里 $typeNum必须为0 function decrypt($data, $method = "AES-128-CBC", $typeNum = 0) { $key = '5hOwdHxpW0GOciqZ'; $iv = '0102030405060708'; $data = base64_encode(hex2bin($data)); $a = openssl_decrypt($data, $method, $key, $typeNum, $iv); return $a; }}
来源地址:https://blog.csdn.net/qq_39523111/article/details/131932082
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341