微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

加密/解密字符串(PHP)

我需要加密和解密字符串.我不能使用哈希,因为解密的字符串必须是可读的.我知道mcrypt,但我正在寻找使用证书文件加密和解密的东西.

谢谢.

解决方法:

您可以通过openssl使用公钥/私钥,一旦使用一次或两次就非常简单

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);
}

生成密钥对,简要指南是http://en.wikibooks.org/wiki/Transwiki:Generate_a_keypair_using_OpenSSL

简而言之

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐