创建充当校验和并验证发件人的文件的最佳方法是什么?

问题描述:

我期待将文件发送给多人,但我也希望他们知道:创建充当校验和并验证发件人的文件的最佳方法是什么?

  1. 的文件,因为我把它发给他们没有被改变。
  2. 他们知道这是我发送的文件。

我使用的是Python编码,所以我想拉取文件,对其进行哈希处理,然后用我的私钥加密哈希。我会将原始文件与这个新文件(可能只是一个.txt)一起发送给我想要的任何人。然后,我的朋友可以使用我的公钥解密哈希,并将它与原始文件中的哈希进行比较。我想至少在SHA-256级别上使用某些东西。我不想使用MD5或SHA-1。

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

这是否符合上述两个要求?有没有一种简单的方法来在Python中实现这一点?

+0

我会推荐使用现有的加密解决方案。例如,PGP。当然你可以通过Python与PGP进行交互。 (https://pythonhosted.org/python-gnupg/) –

+0

你打算如何发送文件?电子邮件?许多电子邮件客户端已将密码签名作为内置功能。 –

+0

您正在重塑密码签名。例如,如果您使用GPG,则可以执行'gpg --sign myfile.txt'。 –

我想拉在文件中,以它的哈希值,然后用加密哈希我的私钥

这正是我们通常所说的签署数字签名,它符合你的两个要求。

这会满足上述两个要求吗?

是的。签署消息并不妨碍它被操纵。只有不可行生成没有私钥的操作消息的签名。

是否有一种简单的方法来在Python中实现它?

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