在练习31-32中,假设Alice和Bob拥有这些公钥和相应的私钥:(nAlice,eAlice)=(2867,7)=(61·47,7),dAlice = 1183和(nBobe,eBob)=(3127,21)=(59·53, 21), dBob = 1149..爱丽丝想给鲍勃发“BUY NOW”,这样他就知道是她寄的,这样只有鲍勃能读。她应该发送什么给鲍勃,假设她签署了信息,然后加密它使用鲍勃的公钥?
时间: 2023-06-12 09:05:40 浏览: 305
公钥和私钥
首先,Alice需要使用自己的私钥对消息进行签名,以确保消息的完整性和真实性。然后,她需要使用Bob的公钥对签名后的消息进行加密,以确保只有Bob能够读取消息。
具体步骤如下:
1. 对消息进行签名,使用Alice的私钥dAlice进行RSA签名,得到签名后的消息S。
S = BUY NOW^dAlice mod nAlice = (2^1183 * 3^1183 * 5^1183 * ... * 2837^1183) mod 2867
2. 将原始消息和签名后的消息拼接在一起,得到待加密的消息M = "BUY NOW" + S。
M = "BUY NOW" + S
3. 使用Bob的公钥eBob和模数nBob对消息M进行加密,得到密文C。
C = M^eBob mod nBob = (("B" * 256^5) + ("U" * 256^4) + ("Y" * 256^3) + (" " * 256^2) + ("N" * 256^1) + ("O" * 256^0) + S)^21 mod 3127
4. 将密文C发送给Bob。
当Bob收到密文C时,他可以使用自己的私钥dBob对密文进行解密,然后分离出原始消息和签名后的消息。具体步骤如下:
1. 使用Bob的私钥dBob对密文C进行解密,得到消息M。
M = C^dBob mod nBob = (("B" * 256^5) + ("U" * 256^4) + ("Y" * 256^3) + (" " * 256^2) + ("N" * 256^1) + ("O" * 256^0) + S)
2. 分离出原始消息和签名后的消息,原始消息为前6个字符,签名后的消息为剩余部分。
Original message: "BUY NOW"
Signed message: S
3. 使用Alice的公钥eAlice和模数nAlice对签名后的消息S进行验证,得到原始消息的哈希值。如果哈希值与原始消息的哈希值匹配,则消息是真实的。
hash("BUY NOW") = 150576725868158582644709984191279655720
hash(S) = S^eAlice mod nAlice = (2^7 * 3^7 * 5^7 * ... * 2837^7) mod 2867
如果hash(S)和hash("BUY NOW")匹配,则可以确定消息是真实的。
阅读全文