
在做接口的时候,我们需要对数据进行加密处理,本例使用的是AES/DES加密解密方法,
因为在加密解密的过程中,加密的串是乱码的,所以加乱码的串进行了base64编码或者转为16进制
同理解密的过程正好相反,具体方法如下:
//AES加密
function mc_encrypt($data, $mc_key,$method = 'AES-256-ECB',$basecode="base64",$iv="") {
$options = OPENSSL_RAW_DATA; //数据格式选项(可选)
$encode = openssl_encrypt($data, $method, $mc_key, $options,$iv);
if($basecode == "hex"){
//hex加密
$encode = String2Hex($encode);
}else{
//base64加密
$encode = base64_encode($encode);
}
return $encode;
}
//AES解密
function mc_decrypt($result, $mc_key,$method = 'AES-256-ECB',$basecode="base64",$iv="") {
$options = OPENSSL_RAW_DATA; //数据格式选项(可选)
if($basecode == "hex"){
//hex解密
$result = Hex2String($result);
}else{
//base64解密
$result = base64_decode($result);
}
$decrypted = openssl_decrypt($result, $method, $mc_key, $options,$iv);
return $decrypted;
}
//16进制串转为字符串
function Hex2String($hex) {
$string = '';
for ($i = 0; $i < strlen($hex) - 1; $i+=2) {
$string .= chr(hexdec($hex[$i] . $hex[$i + 1]));
}
return $string;
}
//字符串转为16进制串
function String2Hex($string) {
$hex = '';
for ($i = 0; $i < strlen($string); $i++) {
$tmp = dechex(ord($string[$i]));
if (strlen($tmp) == 1) {
$tmp = "0" . $tmp;
}
$hex .= $tmp;
}
return $hex;
}胜象大百科 







