如何在PHP中使用openssl实现一个非对称加密

  介绍

这篇文章将为大家详细讲解有关如何在PHP中使用openssl实现一个非对称加密,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

使用非对称加密主要是借助openssl的公钥和私钥,用公钥加密私钥解密,或者私钥加密公钥解密。

1。安装openssl和PHP的openssl扩展

2。生成私钥:openssl genrsa用于生成rsa私钥文件,生成是可以指定私钥长度和密码保护

openssl  genrsa  -out  rsa_private_key.pem  1024

3。生成公钥:rsa命令用于处理rsa密钥,格式转换和打印信息

openssl  rsa 拷贝;rsa_private_key.pem  -pubout  -out  rsa_public_key.pem

4。这里我们使用私钥加密,公钥解密

& lt; php ?/* *   *,密钥文件的路径   */时间=美元privateKeyFilePath  & # 39; rsa_private_key.pem& # 39;;/* *   *,公钥文件的路径   */时间=美元publicKeyFilePath  & # 39; rsa_public_key.pem& # 39;;   extension_loaded (& # 39; openssl # 39;),或是死(& # 39;php需要openssl扩展支持& # 39;);   (file_exists (privateKeyFilePath美元),,,,file_exists (publicKeyFilePath美元)),或是死(& # 39;密钥或者公钥的文件路径不正确& # 39;);/* *   *,生成资源类型的密钥,如果密钥文件内容被破坏,openssl_pkey_get_private函数返回错误的   */$ privateKey =, openssl_pkey_get_private (file_get_contents (privateKeyFilePath美元));/* *   *,生成资源类型的公钥,如果公钥文件内容被破坏,openssl_pkey_get_public函数返回错误的   */$ publicKey =, openssl_pkey_get_public (file_get_contents (publicKeyFilePath美元));   ($ privateKey ,,, publicKey美元),或是死(& # 39;密钥或者公钥不可用& # 39;);/* *   *,原数据   */时间=美元originalData  & # 39;加密前哈哈哈# 39;;/* *   *,加密以后的数据,用于在网路上传输   */encryptData 美元;=,& # 39;& # 39;;   echo  & # 39;原数据为:& # 39;,originalData美元,PHP_EOL;///////////////////////////////用私钥加密////////////////////////if  (openssl_private_encrypt (originalData美元,encryptData美元,美元privateKey)), {   ,/* *   ,,*,加密后,可以base64_encode后方便在网址中传输,或者打印,否则打印为乱码   ,,*/echo 才能;& # 39;加密成功,加密后数据(base64_encode后)为:& # 39;,base64_encode (encryptData美元),,PHP_EOL;   },{else    死才能(& # 39;加密失败& # 39;);   }///////////////////////////////用公钥解密/////////////////////////* *   *,解密以后的数据   */decryptData 美元;=& # 39;& # 39;;   if  (openssl_public_decrypt (encryptData美元,decryptData美元,美元publicKey)), {   echo  & # 39;才能解密成功,解密后数据为:& # 39;,decryptData美元,PHP_EOL;   },{else    死才能(& # 39;解密成功& # 39;);   }

关于如何在PHP中使用openssl实现一个非对称加密就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

如何在PHP中使用openssl实现一个非对称加密