aes前台加密后台解密

it2024-10-21  18

aes加密npm地址:https://www.npmjs.com/package/crypto-js

aes加密git地址/下载: https://github.com/brix/crypto-js

直接上代码:

  前台代码:

       /* * 加密 */ function encrypt(str, key) { key = CryptoJS.enc.Utf8.parse(key ? key : "1111111111111111");// 秘钥 var iv = CryptoJS.enc.Utf8.parse('1234567890123412');//向量iv           var encrypted = CryptoJS.AES.encrypt(str, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.ZeroPadding });           return encrypted.toString();         }         /**          * 解密          * @param str          */           function decrypt(str) {             var key = CryptoJS.enc.Utf8.parse("1111111111111111");// 秘钥             var iv = CryptoJS.enc.Utf8.parse('1234567890123412');//向量iv             var decrypted = CryptoJS.AES.decrypt(str, key, {iv: iv, padding: CryptoJS.pad.ZeroPadding});             return decrypted.toString();           }         //调用         //加密         console.log(CryptoJS.pad.ZeroPadding);         console.log(encrypt("123456"));         //解密         console.log(decrypt("123456"));

 

 后台php代码:

<?php $privateKey = "1111111111111111"; //秘钥 $iv = "1234567890123412"; //向量 $data = "******";//前台加密的数据 //解密 $encryptedData = base64_decode($data); $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $privateKey, $encryptedData, MCRYPT_MODE_CBC, $iv); $decrypted = rtrim($decrypted, "\0"); //注意!解密出来的数据后面会出现六个红点;这句代码可以处理掉,从而不影响进一步的数据操作 echo($decrypted);//解密数据 echo "<hr>";//加密测试与$data比对。    $data1 = "123456";//前台需要加密的数据    echo base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $privateKey, $data1, MCRYPT_MODE_CBC,$iv)); //加密的数据可以与前台对比是一致的

  

注意:php后台有很多框架,如果使用phalcon框架自已的aes加密时,前台与后台的iv是不同的,那么是不能解密的,请注意这一点

转载于:https://www.cnblogs.com/xiaocaoer/p/8257780.html

最新回复(0)