A -> B: A 使用 B 提供的公钥对信息进行加密发送给 B, B 使用自己的私钥进行解密获取原始信息内容。在这个过程中,虽然确保了信息的不被其他人获取解密,因为私钥只有 B 拥有,但是其他人也可以利用这个公钥发送信息给 B。
B -> A: B 使用自己的私钥对信息进行加密发送给 A, A 使用 B 提供的公钥进行解密获取原始信息内容。在这个过程中,虽然确保了信息的发送人是 B,但是不能确保这个信息只有 A一个人知道,因为其他人也可以利用这个公钥来解密 B 发送给 A 的信息。
优点:相对安全,确保了 A 传递给 B 信息不会被其他人解密以及 传递给 A 消息的是 B 本人。
缺点:
发送给 A 的信息可以被其他人获取到。
B 不能确定发送消息的人一定是 A。
效率较为低下,加密解密的过程相对于对称加密较为缓慢。
上述非对称的前面两个缺点其实可以通过二次加密来解决,但是会增大时间开销,以下为具体过程:
使用场景: A生成一套公钥和私钥,并将公钥发送给 B,B也生成一套公钥和私钥,将公钥发送给 A,这样,A 持有 A 的私钥和 B 的公钥,B 持有 A 的公钥 和 B 的私钥。
A -> B: A 先使用 B 的公钥对信息进行加密,确保了消息不会被其他人获取,再将加密后的信息再次使用 A 自己的私钥进行加密,确保了发送方就是 A 本人。B 收到加密后的消息后,先使用 A 提供的公钥进行解密,得到使用 B 公钥加密后的信息, 再使用 B 自己的私钥进行二次解密,最终获得原始信息。
B -> A: B 先使用 A 的公钥对信息进行加密,确保了消息不会被其他人获取,再将加密后的信息再次使用 B 自己的私钥进行加密,确保了发送方就是 B 本人。A 收到加密的消息后,先使用 B 提供的公钥进行解密,得到使用 A 公钥加密后的信息,再使用 A 自己的私钥进行二次解密,最终获得原始信息。
总结:通过以上步骤就确保了在 A 与 B 信息交流的过程中信息不被其他人获取以及彼此的身份不被冒名顶替的情况。