php aescbc偏移量不对称,关于前端AES加密与后台不同的问题。

本文探讨了一个开发者遇到的问题,即在PHP后端使用openssl进行AES-128-CBC加密得到的结果与在线工具及CryptoJS在前端的加密结果不一致。博客详细展示了PHP和CryptoJS的加密代码,并指出尽管尝试了各种设置,但仍然无法得到相同的结果。作者寻求解决方案,同时也欢迎读者分享更好的加密解密方法。
摘要由CSDN通过智能技术生成

后台为php,使用

openssl

aes

进行加密,加密结果与

http://tool.chacuo.net/cryptaes

结果是一致的。

现在的问题是前端使用

CryptoJS

怎么弄都不一样。要么与后台加密的数据不一致,要么

CryptoJS

加的密不能用

CryptoJS

来解密。

问题出在哪里呢,如果大家有更好的方案麻烦一并写出。太苦恼了。

php代码:

$data = '1000001';

$key = 'ABC123';

$iv = '1111111111111111';

// 结果是:2oXkUjqbc1JnSpWEemVfzg==

// 结果和http://tool.chacuo.net/cryptaes一致

$encrypt_string = openssl_encrypt($data, 'AES-128-CBC', $key, 1,  $iv);

js代码,前提引入了CryptoJS:

//十六位十六进制数作为秘钥

var aeskey = CryptoJS.enc.Utf8.parse("ABC123");

//十六位十六进制数作为秘钥偏移量

var aesiv = CryptoJS.enc.Utf8.parse(1111111111111111);

// 加密

function encrypt(data) {

var srcs = CryptoJS.enc.Utf8.parse(data);

var encrypted = CryptoJS.AES.encrypt(srcs, aeskey, {

iv: aesiv,

mode: CryptoJS.mode.CBC,

padding: CryptoJS.pad.Pkcs7

});

//返回base64加密结果

return encrypted.toString();

}

//解密

function decrypt(data) {

// data是base64编码数据

var decrypt = CryptoJS.AES.decrypt(data, aeskey, {

iv: aesiv,

mode: CryptoJS.mode.CBC,

padding: CryptoJS.pad.Pkcs7

});

var decryptedStr = decrypt.toString();

return decryptedStr;

}

// 结果是:IkNtZY1m41sEkgIqsuZBoQ==

// 结果相差太大

console.log(encrypt('1000001'));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值