RSA签名创建和传输

时间:2017-06-12 18:03:51

标签: python-3.x rsa digital-signature

我正在尝试在python3.6中编写一个RSA代码用于教育目的。

邮件加密部分已完成。我现在需要为邮件创建一个数字签名,据我所知,这只是一个使用发件人私钥加密的大整数(如果我错了,请纠正我)。整数使用的大小应该是多少?并且加密的消息和签名是作为一对传输还是应该以某种方式连接成一个整数?

1 个答案:

答案 0 :(得分:1)

签名邮件未加密。签字时,它不会或不应该改变。相反,它被散列并且散列被加密" (这实际上是解密过程,但应用了填充)与私钥。

接收者需要四件事:

  1. 公钥
  2. 原始未经更改的消息
  3. 签名
  4. 关于如何表示和连接所有这些的知识:公钥的编码,消息的编码,签名的编码和使用的实际签名方案(RSA / DSA / EdDSA / SPHINCS /等等。哈希函数和填充方案)
  5. 从数学上讲,RSA签名是一个大整数,但是当你想传输它时,你需要以某种方式对其进行编码。您可以在RFC 8017中找到完整的规范。如果要使用RSA进行签名,则应使用RSASSA-PSS或仅使用PSS来指定被认为是安全的填充方案。如果你想在生产中使用它,请不要自己实现它。