你的第二个猜测并不坏。
通常的方式是签名(不加密)以下:
- 计算哈希的消息(如SHA256),有要签名。
- 签署本哈希值(即使用RSA加密私钥)
就是这样。将简单消息和签名散列传送给任何人。该邮件未加密,因此可供所有收件人阅读。在公钥的帮助下,每个人都可以解密哈希,计算他或她自己的哈希散列,只要哈希(自己计算的和签名和解密的哈希)相等,签名就是有效的,并且消息具有签名后不会改变。
如果您的消息还需要加密以及您通常不使用RSA,因为它对于较大的消息(这意味着比私钥的模数大,例如2048位)要慢并且不灵活。
使用像AES CBC这样的对称算法来加密消息。巧合生成的加密密钥可以使用收件人的公钥进行加密,然后进行传输。
综上所述使用RSA与SHA256(签名)签名和加密和AES CBC(加密): 1.计算SHA256哈希M. 和你的公钥2.标记H您的留言H,即加密^ h用你的RSA私钥。这是您的签名S. 3.生成一个随机密钥K. 4.用AES CBC加密M以获得加密消息M'。 5.用收件人的公钥加密K得到K'。 6.将K',您的签名S和M'发送给您的收件人。
只有收件人才能撤消所有步骤:
- 解密K”与接收者的私有密钥来获得K(RSA)。
- 解密M”与K(AES CBC)得到消息M.
- 解密S采用你的公钥(RSA)获得H.
- 计算M的SHA256哈希
- 比较计算步骤4与H的散列(来自步骤3)。如果两者相同,则签名被成功验证。