PHP接口请求加密前端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);
}
后端
// 加密用的
// 参数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. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
TP源码网 » PHP接口请求加密前端JS解密实用方案代码
TP源码网 » PHP接口请求加密前端JS解密实用方案代码