一个完整的密码/消息传送过程:
- 定义:
- 发送方:S
- 接收方:R
- 消息:M
- 加密:EC(M,K) (其中M为要加密的消息,K为密钥)
- 解密:DC(M,K) (其中M为要加密的消息,K为密钥)
- 对称加密密钥:Key
- 不对称加密: 私钥 PrvK ; 公钥:PubK ; 初始化向量 IV
- 哈希算法: Hash()
- 过程:S要与R进行消息传输,传输的消息为M;在进行消息对话之前,S需要将加密消息M的密钥K传送给R,这样R就可以用K来还原消息M。那如何传送K呢?
- S通过一般渠道传送公钥(PubK)给R
- 传送Key (S-->R)
S:
- 用私钥加密对称加密密钥:EC(Key,PrvK)
- 生成消息摘要并加密:EC(Hash(Key),PrvK)
- 将上面的消息发送给R
R:
- 用公钥(PubKey)解密消息:DC(EC(Key,PrvK),PubK)
- 用公钥解密消息摘要:DC(EC(Hash(Key),PrvK),PubK)
- 将解密的消息用同样的哈希算法生成消息摘要:Hash(DC(EC(Key,PrvK),PubK))
- 比较第二和第三步的消息摘要是否一致,如果一致,则表明消息没有被修改
- 传送消息M
- S: 用私钥加密消息:EC(M,Key)
- R: 将加密的消息用私钥解密: DC(EC(M,Key),Key)