我有一些数据需要发送到其他目的地。所述数据是字符串格式。我需要的是一种机制,以确保在目的地收到的数据实际上来自我的批准来源。
我的理解是我需要一个带有私钥的数字签名,只有源和目的地才知道它。那么我怎么能在PHP中实现呢?
答案 0 :(得分:1)
是的,您可以使用公钥加密技术完成该任务。基本上,您的源需要私钥和公钥证书,并使用他/她的私有证书生成数据签名,通常通过使用他/她的私钥加密他/她想要发送的数据的哈希值。 (哈希确保发件人数据的完整性。) 接收者需要知道公钥证书并通过用假定发送者的公钥解密加密的哈希并自己重新生成数据的哈希来验证签名。如果他收到的加密哈希的解密值和(重新)生成的哈希匹配,客户端可以确保数据是由拥有相应私钥的发送者发送的(当然,这不是必然意味着他是你认为他的人,只要他能够获得合法的私人证书)。技术上如此:
您可能会注意到,私钥是验证发件人身份的重要部分,因此应保密。但是,为了确保私钥真正属于发件人,您仍然需要一些信任来源:您可以选择由您选择的证书颁发机构颁发的X.509证书(https://en.wikipedia.org/wiki/X.509)或找到您自己的证书确保您与合适的人沟通的方式(如PGP信任网)。
关于PHP,有一整套与公钥加密相关的功能。在这里查看通常用于这些任务的openssl函数:
http://www.php.net/manual/en/book.openssl.php
编辑:如果你想让发件人和收件人都被识别出来,正如你的问题标题所暗示的那样,你只需要反转这个方案中的角色:你的收件人成为发送者时,他的回答是原来的发件人接收器。