我在想一种创建数字签名的方法。我需要这个,因为一些文件需要由授权用户签署,就像授权用户一样,并且接收用户必须看到它来自授权,并且如果发生争议,发布的用户必须验证它是他的文件。
为此我试图在图像中上传带有实际签名的图像。
问题:我可以从签名图片中获取唯一值吗?
我正在考虑从图像中获取唯一值,然后使用签名图像中加密形式的唯一值作为私钥给openssl_sign
。
通过这种方式,发布用户可以签名并验证它是他的文件。但接收用户需要一个密钥才能打开文件。
问题:我可以向用户提供密钥(只有接收用户可用的密钥)才能打开该加密文件吗?
我已经搜索过但很难找到这些东西。请解释一下这些事情,如果我的逻辑错误,请更好地了解。
由于
答案 0 :(得分:5)
首先,digital signature is a specific cryptography term。这是一种公钥加密方式,您可以使用私钥对邮件进行签名,任何人都可以使用您的公钥验证签名。
数字签名不是:
如果出于法律原因需要相当于纸笔签名的“数字”,请咨询律师。在一个法律问题上投掷密码术几乎是一个很好的举动,特别是因为大多数法律专业人士甚至不知道RSA代表什么,更不用说它是如何运作的。
如果事实证明您只需要加密数字签名grab libsodium and use crypto_sign_detached()
。 PHP为您提供的内容更加安全(openssl_sign()
是RSA + SHA1)。
答案 1 :(得分:2)
我不确定你究竟在问什么,但这里有一些意见/建议:
"digital signature"是一回事。手写签名的图像完全不同。
如果您愿意,可以将图像与数字签名相关联。这将涉及创建证书。这是一个很好的讨论:
How to add digital signature (RSA, Certificate, etc) to any of file, using PHP?