openssl_public_encrypt()和openssl_private_encrypt()的输出

时间:2012-04-25 12:17:03

标签: php encryption openssl public-key-encryption

我想知道一些事情

  • openssl_public_encrypt()和openssl_private_encrypt()函数的输出是什么?
  • 上述功能(加密数据)的输出是否是网络安全的?
  • 如何在网站之间传输生成的加密数据?

1 个答案:

答案 0 :(得分:1)

openssl_public_encrypt()使用公钥加密消息,以便只有相应的私钥才能对其进行解密。这用于保护信息不被不应该看到的人看到。

openssl_private_encrypt()使用私钥对邮件进行加密,以便具有相应公钥的任何人都可以对其进行解密。这 not 用于保护信息免受不必要的眼睛的伤害,它用于制作数字签名以帮助验证数据是否未被修改。你通常不应该使用这个功能;请改用openssl_sign()openssl_verify()

加密和签名通常一起使用:您获取数据,使用您自己的私钥对其进行签名(使用openssl_sign()),然后使用收件人的公钥对其进行加密(使用openssl_public_encrypt())。将签名和加密邮件都发送给收件人,收件人可以使用其私钥解密邮件(使用openssl_private_decrypt()),并使用您的公钥验证签名(使用openssl_verify())。这样可以确保在传输过程中没有人能够读取篡改消息,这可能就是“网络安全”的含义。

至于在网站之间传输数据,您可以以任何方式执行此操作。 HTTP,FTP,电子邮件,API调用,等等。加密和签名的重点是您不必使用任何特殊方法安全地传输邮件。