wx.getUserInfo 获取的加密数据解密 乱码
解密代码用的官方 稍微修改了下
if (strlen($this->sessionKey) != 24) {
//return ErrorCode::$IllegalAesKey;
return "";
}
$aesKey = base64_decode($this->sessionKey);
if (strlen($iv) != 24) {
//return ErrorCode::$IllegalIv;
return "";
}
$aesIV=base64_decode($iv);
$aesCipher=base64_decode($encryptedData);
$result = openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);
return $result;
解密结果就是
你好,请问你这个iv出了什么问题呢,我用openssl解密,结果为空啊,好崩溃,不知道是什么问题啊,我把解出来的sessionkey,iv和endata直接带入到官方示例的demo,返回的是-41003错误,我把官方demo的这几个变量直接带入到我的代码里面是跟官方demo一样是解密成功的,这就意味着我的这三个变量存在不匹配的现状,但是怎么排查呢,麻烦指教呢谢谢~~~
~
好的 谢谢 我就是iv 用错了 导致的
你好,请问你的iv是怎么用错了呢,为什么我传到后台的iv,sessionkey信息都对,解密结果却是空呢..能否麻烦指教一下 T——T
iv r7BXXKkLb8qrSNn05n0qiA==
加密数据
i0iKgp4BsaCTybO0/60Lx+zVXIvHwy27r7rwGTOAQlegJqTmWgknogzLIKQuvVpQgXAAXKMNVkdGrmY3hLx6es8xnMBWjzwY2CAtXzh/p/oL/wtiqL8frz4aUqzfaMDsAp8ccoRZS2BeWEHh44xR2DsAtqkrMU5QhqPXZ1c10zE/fYgIHVpsg1nonTP/BKvrgOLRUK7a19oaU3ZB6lpiT175LK3UdACfOwWDZSw+qBuwMAhwnrxvnYrnHJFHh1R3+GoaHgpLo17aoLCO/NXjecVlzeNECuIdkbJWLsxZSx5RbI0yaqyEe6N3nG/AFg8uusipZblBnSvm9k6CW+AgVfrCbya13zMLMSNb1P/yt2jJPVstcAc3Fl1ZBaSoz54jS44v9iTTYLIBjylFNi5UywUqysU8rKehMjMqfbI9vhLdF/Iv9UqJDgv/7dv7hSPpd4dPt2edbzk7F/Nr1UF9rRt3ZzuvcVMj21GPdkA+mNZleK/vcReuuZeQxvDPZrCs1fGUswaKQoEECZthde20Sw==
sessionKey GcD1xwDH7O+5s7ohGwlCHA==
你能用你的程序帮我解下么? 看好着没? 谢谢了哈
我就是用官方的 唯一就是把验证appid相关的去掉了
我用的 PHP,你可以先尝试一下用官方提供的代码,看看能不能正常解密,然后再对比一下你改过的代码,逐步排除吧
你是用php 还是 java ? 我两个都试了,都有问题 每次都是前边几个字符乱码
那你检查一下你改的代码,是否在解密前漏了把填充的数据去掉,原始数据包是用了 PKCS#7 算法填充的,解密前不去掉填充的那一部分数据的话,是会出现部分乱码的情况的
if (strlen($this->sessionKey) != 24) {
//return ErrorCode::$IllegalAesKey;
return "";
}
$aesKey = base64_decode($this->sessionKey);
if (strlen($iv) != 24) {
//return ErrorCode::$IllegalIv;
return "";
}
$aesIV=base64_decode($iv);
$aesCipher=base64_decode($encryptedData);
$result = openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);
return $result;
代码就是上边的 上次可能贴错了,我现在能解密 但是就是 每次解密前几个字符是乱码 其它都好着,应该不是代码问题,如果代码有问题 不可能解密成