我的理解是
用于加密:我使用收件人的PUBLIC KEY加密我的邮件。他将使用他的私钥来阅读我的信息(只有他能做到这一点)=>好吧
用于签名:我使用我的私钥(因为没有人拥有它,它证明了我的身份)。但如果我的收件人使用我的PUBLIC KEY,每个人都可以这样做并阅读我的信息!谁能解释一下呢?
然后,我认为我应该做的是
我用我的私人密码签署我的留言=>它证明了我的身份
我使用我的收件人PUBLIC KEY =>加密步骤1的结果。为了避免任何人阅读它
用他的PRIVATE KEY =>解密只有他能做到这一点
他用我的PUBLIC KEY
这是对的吗?
答案 0 :(得分:0)
你的第二个猜测还不错。
通常签名(非加密)的方式如下:
那就是它。将纯文本消息和签名的哈希传递给任何人。邮件未加密,因此对所有收件人都可读。在你的公钥的帮助下,每个人都可以解密哈希,计算他或她自己的消息哈希值,只要两个哈希值(自我计算的和签名和解密的哈希值)相等,签名就有效,并且消息有签字后没有改变。
如果您的消息也必须加密,您通常不使用RSA,因为它对于较大的消息来说是缓慢且不灵活的(这意味着大于私钥的模数,例如2048位)。
使用AES CBC等对称算法来加密消息。可以使用收件人的公钥加密巧合生成的加密密钥,然后进行转移。
总结使用带有SHA256(签名)和AES CBC(加密)的RSA进行签名和加密: 1.计算消息M的SHA256哈希H. 2.使用您的公钥对H进行签名,即使用您的RSA私钥加密H.那是你的签名S. 3.生成随机密钥K. 4.使用AES CBC加密M以获取加密消息M'。 5.使用收件人的公钥加密K以获得K'。 6.发送K',您的签名S和M'给你的收件人。
只有收件人才能撤消所有步骤: