python - 创建充当校验和并验证发件人的文件的最佳方法?

标签 python encryption hash sha256 pki

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

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

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

注意 - 我发送的原始文件不必加密,只是为了确保完整性和不可否认性。

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

最佳答案

I was thinking of pulling in the file, taking a hash of it, and then encrypting the hash with my private key

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

Would this fulfill the two requirements above?

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

And is there an easy way to implement this in Python?

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

关于python - 创建充当校验和并验证发件人的文件的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35664325/

相关文章:

python - Pandas:查找空/缺失值并将其添加到 DataFrame 中

python - 如何基于 1000 个符号字符串打印出带有单个替换元素的 1000 个新字符串?

.net - 在 .NET 中加密数据的最佳实践是什么?

黑莓RSA解密总是挂起

javascript - JavaScript 队列的 O(1) 删除

python - 如何解决 selenium python 中的嵌套循环问题

python - 如何在 Go 语言中使用经过训练的 Scikit Learn Python 模型?

c - 在没有外部 DLL 的情况下用 C 语言的 PGP 公钥加密字符串?

algorithm - 为什么最常见的散列 (SHA1) 密码前缀是 "00000"?

algorithm - Racket 中的算法可以在列表之间生成引用的哈希值?