最近在使用openssl中的方法进行加密、解密工作,发现经过openssl_public_encrypt函数加密后得到的字符串显示为乱码,而且乱码还是变化的,对同一个字符串进行加密后,每次得到的乱码都不一样。但用openssl_private_decrypt函数再进行解密,却能正确得到加密之前的字符串。不知这个乱码是这么回事?
另外我想把加密后的字符串放到url地址里,传到别的文件中,再进行解密。但由于是乱码,所以无法传递。希望有高手给解决一下,万分感谢。急!急!急!
以下是一个例子,供参考:
<?php
//Encrypt using server public key
$fp = fopen("publickey.crt","r"); //证书(含公钥)
$pub_key = fread($fp,8192);
fclose($fp);
$publickey = openssl_get_publickey($pub_key);
openssl_public_encrypt("123",$crypttext,$publickey);
echo $crypttext; //输出为乱码
//Decrypt using client private key
$fp = fopen("privatekey.b64","r"); //私钥
$priv_key = fread($fp,8192);
fclose($fp);
$res = openssl_get_privatekey($priv_key);
openssl_private_decrypt($crypttext,$newsource,$res);
echo $newsource; //输出为“123”
?>