我需要加密和解密一个字符串。我不能使用哈希,因为解密后的字符串必须是可读的。我知道mcrypt,但我正在寻找一些使用证书文件来加密和解密的东西。
谢谢。
谢谢。
您可以通过openssl使用公钥/私钥,一旦使用了1-2次,这就非常简单了。
function encryptString($clearText)
{
$keyFile=fopen("public.pem","r");
$publicKey=fread($keyFile,8192);
fclose($keyFile);
openssl_get_publickey($publicKey);
openssl_public_encrypt($clearText,$cryptText,$publicKey);
return(base64_encode($cryptText));
}
function decryptString($cryptText)
{
$keyFile=fopen("private.pem","r");
$privateKey=fread($keyFile,8192);
fclose($keyFile);
openssl_get_privatekey($privateKey);
$binText = base64_decode($cryptText);
openssl_private_decrypt($binText,$clearText,$privateKey);
return($clearText);
}
openssl rsa -pubout -in private.pem -out public.pem
更新
@keepwalking在下面问如何通过命令行实现此操作,@vstm回答并提供了一个很好的链接http://www.devco.net/archives/2006/02/13/public_-_private_key_encryption_using_openssl.php。
总结一下这个页面,一旦您创建了密钥,您就可以使用以下命令将文本文件 file.txt 加密并输出到 file.ssl 。
openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl
如果要将file.ssl解密到另一个文件decrypt.txt,您可以使用以下命令。
openssl rsautl -decrypt -inkey private.pem -in file.ssl -out decrypted.txt
openssl rsautl -help
,了解填充方案等选项。 - vstm