21,887
社区成员
发帖
与我相关
我的任务
分享
<?
//将$string加密后通过地址栏传递给其他页面PHP解密出来
$string = "action=test&id=2&key=".urlencode('测试');
$key = "_key_";
echo( '$string:::::::::>'.$string);
echo( '<br />$key:::::::::>'.$key);
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB), MCRYPT_RAND);
$enc = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $string, MCRYPT_MODE_CBC, $iv);
//这里是乱码无法通过地址栏传递
echo( '<br />这里是加密后的内容:::::::::>'.$enc);
//转为十六进制通过URL传递,否则是乱码
echo( '<br />转为16进制后的加密内容:::::::::>'.bin2hex($enc) );
$crypttext = str_replace(chr(0), '', mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $enc, MCRYPT_MODE_CBC, $iv) );
echo( '<br />不传递直接解密:::::::::>'.$crypttext);
//转换十六进制为二进制,然后解密,这里无法还原为$string定义的值
$enc = hex2bin( bin2hex($enc) );
$crypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $enc, MCRYPT_MODE_CBC, $iv);
echo( '<br />:::::::::>'.$crypttext);
//转换16进制为2进制,但是这样写是无效的
function hex2bin($data) {
return decbin(hexdec($data));
}
?>
function hex2bin($data) {
if(''==$data)return '';
$len = strlen($data);
for($i=0;$i<$len;$i+=2) {
$return .= pack("C",hexdec(substr($data,$i,2)));
}
return $return;
}
//这个是最开始使用的函数
function hex2bin($data) {
if(''==$data)return '';
$len = strlen($data);
for($i=0;$i<$len;$i+=2) {
$return .= pack("C",hexdec(substr($data,$i,2)));
}
return $return;
}
//这个是第二个
function hex2bin($data) {
if(''==$data)return '';
$len = strlen($data = strtoupper($data));
for($i=0,$return=''; $i<len; $i++) {
switch($data{$i}) {
case '0': $return .= '0000'; break;
case '1': $return .= '0001'; break;
case '2': $return .= '0010'; break;
case '3': $return .= '0011'; break;
case '4': $return .= '0100'; break;
case '5': $return .= '0101'; break;
case '6': $return .= '0110'; break;
case '7': $return .= '0111'; break;
case '8': $return .= '1000'; break;
case '9': $return .= '1001'; break;
case 'A': $return .= '1010'; break;
case 'B': $return .= '1011'; break;
case 'C': $return .= '1100'; break;
case 'D': $return .= '1101'; break;
case 'E': $return .= '1110'; break;
case 'F': $return .= '1111'; break;
}
}
return $return;
}
//这个是最后一个
function hex2bin($data) {
return decbin(hexdec($data));
}