我解密接口返回的数据是正常解密的 然后 自己加密的 在网上的在线平台可以解密 但是在本地解不开 解出一半来 。。 求大佬指点一下
代码如下
//未加密数据(本地)
$stra='{"mobile":"186XXXXXXXX","goodsCode":"10001","orderId":"123456789","cityCode":"170","netType":"99"}';
//加密数据(接口返回的)
$strb='f1ec99caf1f08c8cc02ed354e4f6fd8d348e2ed8dee7c98ca63c6bb201da88f3577318c85dfe15eb1a02f2ba06cff7283d8c6bb28d8da8f58d4cc67ff9b44d4b9d79e5661f9634d800b98397541fcf656a12fc210ffd78101c7235607cbd6fcf73789279341f2e2821795714a6720745';
//偏移量
$iv='0102030405060708';
//秘钥
$key='12345678abcdefgh';
/*
$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128,$b,hexToStr($a),MCRYPT_MODE_CBC,$v);
return pkcs5_unpada($decrypted);
function hexToStr($hex)//十六进制转字符串
{
$string="";
for($i=0;$i<strlen($hex)-1;$i+=2){
$string.=chr(hexdec($hex[$i].$hex[$i+1]));
}
return $string;
}
echo $decrypted;
die; */
// 加密
function encrypt_pass($input, $key,$iv ) {
$size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
$input = pkcs5_pad($input, $size);
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
mcrypt_generic_init($td, $key, $iv);
$data = mcrypt_generic($td, $input);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
$data = strToHex($data);
return $data;
}
//填充
function pkcs5_pad ($text, $blocksize) {
$pad = $blocksize - (strlen($text) % $blocksize);
return $text . str_repeat(chr($pad), $pad);
}
// 解密
function decrypt_pass($sStr, $sKey,$iv) {
$decrypted= mcrypt_decrypt(MCRYPT_RIJNDAEL_128,$sKey,hexToStr($sStr),MCRYPT_MODE_CBC,$iv);
$dec_s = strlen($decrypted);
$padding = ord($decrypted[$dec_s-1]);
$decrypted = substr($decrypted, 0, -$padding);
return $decrypted;
}
//十六进制转字符串
function hexToStr($hex)
{
$string="";
for($i=0;$i<strlen($hex)-1;$i+=2){
$string.=chr(hexdec($hex[$i].$hex[$i+1]));
}
return $string;
}
//字符串转十六进制
function strToHex($string)
{
$hex="";
$tmp="";
for($i=0;$i<strlen($string);$i++)
{
$tmp = dechex(ord($string[$i]));
$hex.= (strlen($tmp) == 1) ? "0".$tmp : $tmp;
}
$hex=strtoupper($hex);
return $hex;
}
echo '解密文档中的密文
';
echo decrypt_pass($strb,$key,$iv)."
";
echo '加密文件中的字符串
';
echo encrypt_pass($stra,$key,$iv)."
";
$passstr= encrypt_pass($stra,$key,$iv)."
";
echo '解密文件加密的密文
';
echo decrypt_pass($passstr,$key,$iv)."
";
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.