如何对密文进行十六进制编码

时间:2014-01-15 18:12:17

标签: php encryption openssl private-key non-ascii-characters

我对PHP中的函数openssl_private_encrypt()有疑问。 在编码之前,我有使用OpenSSL生成的有效私钥。 基于php.net中的一个论坛帖子,我有以下代码:

$fp = fopen("D:\\myprivatekey.pem", "r");
$priv_key = fread($fp, 8192);
fclose($fp);
$res = openssl_get_privatekey($priv_key, 'mypassphrase');
openssl_private_encrypt('plaintext', $crypttext, $res);
echo "String crypted: $crypttext";

我已将文件libeay32.dll和ssleay32.dll从C:\ xampp \ php复制到C:\ xampp \ apache \ bin 然后结果充满了不可读的角色,如:

字符串加密:^«ƒ¸GÖÕaR³žØc®íû>& x©bŒsÌ̉R + \,Î?lãq4¨¼Œ8'~pcšM¸¹“ŽμÀ;> 1'',ác;³•ç>¤À0Ž¾Ne@ »ÿ¡¯æ'^ b‡AIAA)‾ {û³òÌ+ A =Gô\M¾GrXt^ EI·AOE-¶¹HÝû×L5ÆÙJ~”ÄWºÚú9t/ O:ÛÑÇÙ¨Bpþq/,OEO·@¿Ë™¾^ 7 [ ºqom...ójR* n“nÇ®Nx«ïÈøkW2”9L«RÇÇôZ& ãÞò¾rAO“Íj+¥`~û°rÌÿ5Ô!”¿W

如何将输出作为ASCII字符串MD5(但长度超过32),例如: 87f0ea083c7a03bb89aec910 ........

我认为不可读的字符可以转换为字节数组,然后将其转换为字符串,但我如何在PHP中执行此操作?

感谢。

1 个答案:

答案 0 :(得分:0)

问题解决了。只需使用函数bin2hex()。

感谢stackoverflow,当我输入问题时,它显示了另一个与建议类似的线程,非常棒!!