2017-06-12 31 views
0

我想在python3.6中为教育目的写一个RSA代码。RSA签名的创建和转移

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

回答

1

已签名的邮件未加密。它在签名时不会或者不应该改变。相反,它被散列并且散列被“加密”(这实际上是解密过程,但是使用填充)和私钥。

接收器需要四样东西:

  1. 公钥
  2. 原始不变的消息
  3. 签名
  4. 知识了解这一切是如何表示和连接:公共密钥的编码,编码消息,使用的签名和实际签名方案的编码(具有一些特定散列函数和填充方案的RSA/DSA/EdDSA/SPHINCS /等)

从数学上讲,RSA签名是一个单一的大整数,但是当你想传输它时,你需要以某种方式对它进行编码。您可以在RFC 8017中找到完整的规格。如果你想使用RSA进行签名,你应该使用RSASSA-PSS或简单的PSS来指定一个被认为是安全的填充方案。如果你想在生产中使用它,不要自己实现它。