【问题标题】:Best way to create a file that acts as a checksum and verifies the sender?创建充当校验和并验证发件人的文件的最佳方法是什么?
【发布时间】:2016-06-10 09:54:25
【问题描述】:

我希望将文件发送给多人,但我也希望他们知道:

  1. 自从我将文件发送给他们以来,该文件没有更改过。
  2. 他们知道是我发送了文件。

我正在使用 Python 进行编码,因此我正在考虑提取文件,对其进行哈希处理,然后使用我的私钥对哈希进行加密。我会将原始文件和这个新文件(可能只是一个 .txt)一起发送给我想要的任何人。然后,我的朋友可以使用我的公钥解密散列,并将其与他们从原始文件中获取的散列进行比较。我想至少使用 SHA-256 级别的东西。我不想使用 MD5 或 SHA-1。

注意-我发送的原始文件不必加密,只是寻找一些完整性和不可否认性。

这能满足上述两个要求吗?有没有一种简单的方法可以在 Python 中实现这一点?

【问题讨论】:

  • 我建议使用现有的加密解决方案。例如,PGP。当然,您可以通过 Python 与 PGP 交互。 (pythonhosted.org/python-gnupg)
  • 你打算如何发送文件?电子邮件?许多电子邮件客户端已经将加密签名作为内置功能。
  • 您正在重新发明加密签名。例如,如果您使用 GPG,则可以使用 gpg --sign myfile.txt

标签: python encryption hash sha256 pki


【解决方案1】:

我正在考虑拉入文件,对其进行哈希处理,然后用我的私钥对哈希进行加密

这正是我们通常所说的签名数字签名,满足您的两个要求。

这能满足以上两个要求吗?

是的。签署消息并不能阻止它被操纵。在没有私钥的情况下,它只会不可行为受操纵的消息生成签名。

有没有一种简单的方法可以在 Python 中实现这一点?

当然,pyCrypto 支持 RSA 和 DSA。不过你应该试试ed25519,因为它的签名更小。

【讨论】:

    猜你喜欢
    • 2010-11-13
    • 2010-09-06
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    相关资源
    最近更新 更多