【问题标题】:PHP creation of signaturePHP创建签名
【发布时间】:2016-05-18 04:56:53
【问题描述】:

我正在考虑一种创建数字签名的方法。我需要这个,因为某些文件需要像证书一样由授权用户签名,并且接收用户必须看到它来自授权用户,并且在发生争议时,颁发的用户必须验证它是他的文件。

为此,我正在尝试上传带有实际签名的图像。

问题:我可以从签名图像中获取唯一值吗?

我正在考虑从图像中获取唯一值,然后将签名图像中唯一值的加密形式作为私钥提供给openssl_sign

通过这个,发布用户可以签名并验证文件是他的。但是接收用户需要一个密钥才能打开文件。

问题:我可以给用户密钥(只对接收用户可用的密钥)来打开该加密文件吗?

我已经搜索过,但找不到这些东西。请解释这些事情,如果我的逻辑有误,请给出更好的想法。

谢谢

【问题讨论】:

    标签: php security cryptography


    【解决方案1】:

    首先,digital signature is a specific cryptography term。这是一种公钥加密形式,您可以使用私钥对消息进行签名,任何人都可以使用您的公钥验证签名。

    数字签名不是:

    • 加密散列函数,例如 MD5(尽管它们在内部使用散列函数)
    • 相当于传统纸笔签名的数字签名

    如果您出于法律原因需要相当于纸笔签名的“数字”,请咨询律师。将密码学应用于法律问题几乎没有是一个好的举措,尤其是因为大多数法律专业人士甚至不知道 RSA 代表什么,更不用说它是如何工作的了。

    如果你只需要一个加密数字签名,grab libsodium and use crypto_sign_detached()。 PHP 原生提供给您的方式更加安全(openssl_sign() 是 RSA + SHA1)。

    【讨论】:

    • 感谢答案
    【解决方案2】:

    我不确定你到底在问什么,但这里有一些 cmets/建议:

    1. "digital signature" 是一回事。手写签名的图像是完全不同的东西。

    2. 如果您愿意,可以将图像与数字签名相关联。这将涉及创建证书。这是一个很好的讨论:

    How to add digital signature (RSA, Certificate, etc) to any of file, using PHP?

    1. 您还可以使用"non-repudiation" 的证书 - 以保证上传图片的人实际上就是制作图片的人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-25
      • 2019-05-23
      • 2021-09-13
      • 1970-01-01
      • 2012-11-01
      • 2014-06-02
      • 2018-08-11
      • 1970-01-01
      相关资源
      最近更新 更多