CryptoJS加密其中iv为32位,php 解密 加密phpencryption 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 256太长了,因为我是要根据js在PHP上模拟出来,js的iv确定32位了蛋疼的问题是js可以加密但是PHP出现警告 错误信息显示 iv 太长了,应该是 16 位长度你的 js 部分存在问题,无法与 php 对应(不是说算法有问题,既然是想要在两方面通用,那总是要达成某种妥协的)就是部分text = 'T10515';var key = '123454536f667445454d537973576562'; key = CryptoJS.enc.Utf8.parse(key);var iv = "1234577290ABCDEF1264147890ACAE45"; iv = CryptoJS.enc.Utf8.parse(iv);var encrypted = CryptoJS.AES.encrypt(text, key, { iv: iv, mode:CryptoJS.mode.CBC, padding:CryptoJS.pad.ZeroPadding }).toString()document.write(encrypted);b7y/JPJFNTfxNVR8H4NNtw== php 部分$pk = "123454536f667445454d537973576562";$iv = substr("1234577290ABCDEF1264147890ACAE45", 0, 16);$t = 'T10515'; $encrypted = ( mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $pk, $t, MCRYPT_MODE_CBC,$iv) );echo base64_encode($encrypted).'<br>';b7y/JPJFNTfxNVR8H4NNtw==解密echo mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $pk, $encrypted, MCRYPT_MODE_CBC, $iv);T10515可以推断, js 部分实际只使用了 iv 的 16 位长度 需要注意的是,php5.4 及以下虽然会有 iv 超长的警告但依然会完成加密和解密的动作(当然密文就不一样了) Utf8是可以解出来的,但是Js是hex,因为不能动js的代码,所以只能在PHP想办法了 $pk = pack('H*', "123454536f667445454d537973576562");$iv = pack('H*', "1234577290ABCDEF1264147890ACAE45");W/3ax9dAw/GQ/ELf5enWeQ==T10515W/3ax9dAw/GQ/ELf5enWeQ==T10515如果你坚持不加 padding:CryptoJS.pad.ZeroPadding(不足部分以'\0'充填)的话,那就是无解了dRewstG3hsVzDdKJxzmXtg==这样的结果,php 是得不到的 求高手!!!!! 使用symfony的童鞋报个道吧。大家对这个框架感觉怎么样? 怎样删除Discuz X1.5版本的文章的发布者和发布时间呢??????????????? 求资源啊,关于视频整站的。可实现... ... php连接MySQL数据库,如何设置超时 PHP的时间戳让JS显示,显示不正确! 如何用php 下载网站,包括图片和js.css 设置虚拟主机出现的问题。 我的CSDN账号怎么总是自动退出了,不知道大家有没有遇到这种情况! 织梦5.7为什么提取不取内容的第一张图为缩略图? phpcms静态路径 如何处理呢 PHP 一个数组操作方法求解
蛋疼的问题是js可以加密但是PHP出现警告
就是部分text = 'T10515';
var key = '123454536f667445454d537973576562';
key = CryptoJS.enc.Utf8.parse(key);
var iv = "1234577290ABCDEF1264147890ACAE45";
iv = CryptoJS.enc.Utf8.parse(iv);
var encrypted = CryptoJS.AES.encrypt(text, key, {
iv: iv,
mode:CryptoJS.mode.CBC,
padding:CryptoJS.pad.ZeroPadding
}).toString()
document.write(encrypted);
b7y/JPJFNTfxNVR8H4NNtw== php 部分$pk = "123454536f667445454d537973576562";
$iv = substr("1234577290ABCDEF1264147890ACAE45", 0, 16);
$t = 'T10515';
$encrypted = ( mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $pk, $t, MCRYPT_MODE_CBC,$iv) );
echo base64_encode($encrypted).'<br>';
b7y/JPJFNTfxNVR8H4NNtw==解密echo mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $pk, $encrypted, MCRYPT_MODE_CBC, $iv);T10515可以推断, js 部分实际只使用了 iv 的 16 位长度
但依然会完成加密和解密的动作(当然密文就不一样了)
$iv = pack('H*', "1234577290ABCDEF1264147890ACAE45");W/3ax9dAw/GQ/ELf5enWeQ==
T10515
W/3ax9dAw/GQ/ELf5enWeQ==
T10515如果你坚持不加 padding:CryptoJS.pad.ZeroPadding(不足部分以'\0'充填)的话,那就是无解了
dRewstG3hsVzDdKJxzmXtg==
这样的结果,php 是得不到的