> php教程 > php >

php接口请求加密前端js解密方案【亲测可用】

来源:网络 文章列表 2022-05-01 8
前后端JS加密的方法

前端代码:

// 这个是加密用的
function encrypt(text){
    var key = CryptoJS.enc.Utf8.parse('1234567890654321'); //为了避免补位,直接用16位的秘钥
    var iv = CryptoJS.enc.Utf8.parse('1234567890123456'); //16位初始向量
    var encrypted = CryptoJS.AES.encrypt(text, key, {
            iv: iv,
            mode:CryptoJS.mode.CBC,
            padding:CryptoJS.pad.Pkcs7
        });
    return encrypted.toString();
}

encrypt(123); // AMFSKTJa3K092qSi5XC46w==

// 这个是解密用的
function decrypt (text) {
  var key = CryptoJS.enc.Utf8.parse('1234567890654321'); //为了避免补位,直接用16位的秘钥
  var iv = CryptoJS.enc.Utf8.parse('1234567890123456'); //16位初始向量
  var encrypted = CryptoJS.AES.decrypt(text, key, {
      iv: iv,
      mode:CryptoJS.mode.CBC,
      padding:CryptoJS.pad.Pkcs7  
  });   
  return encrypted.toString(CryptoJS.enc.Utf8); 
}

php代码:

// 加密用的
// 参数1,为数据,参数2为加密算法,AES里最安全的一种
$a = openssl_encrypt('123', 'aes-128-cbc', '1234567890654321', 1, '1234567890123456');
echo base64_encode($a);  // AMFSKTJa3K092qSi5XC46w==


// 解密用的
$b = openssl_decrypt($encrypted, 'aes-128-cbc', $key, 0 , $iv);
echo $b;

// 其中,加密方法的第四个参数为1,而解密的第四个参数为0,不然解密不了

这样可以实现js加密结果和php加密结果一致,而且两者都能互相解密

另,其他参数不变情况下,修改js的 padding为 CryptoJS.pad.ZeroPadding 会是加密结果不同,但确可以php的 openssl_decrypt 解密,且解密结果一样。

腾讯云限量秒杀

1核2G 5M 50元/年 2核4G 8M 74元/年 4核8G 5M 818元/年 CDN流量包 100GB 9元

版权声明

本站部分原创文章,部分文章整理自网络。如有转载的文章侵犯了您的版权,请联系站长删除处理。如果您有优质文章,欢迎发稿给我们!联系站长:
愿本站的内容能为您的学习、工作带来绵薄之力。

评论

  • 随机获取
点击刷新
精彩评论

友情链接