我在我正在使用的应用程序中使用RSA加密,它感觉非常安全......你有一个加密它的公钥和一个解密它的私钥。
现在我希望在不同的应用程序中使用AES,并且为客户端和服务器端使用相同密钥的想法困扰我......是不是服务器端密钥应该对客户端保密?否则,如果加密密钥不是秘密那么为什么还要加密加密呢?
也许我对加密知之甚少,看起来有点奇怪,我希望有人能为我澄清一下这个混乱......
非常感谢!
答案 0 :(得分:2)
服务器端密钥是否应该对客户端保密?
取决于他们是否相互信任,然后不,它不应该是秘密的。此外,如果您想使用对称加密技术,它可能是秘密的,因为双方都需要共享密钥。
否则,如果加密密钥ain的秘密,为什么这么麻烦 无论如何用它加密?
它是的秘密,只有服务器和客户端应该知道它 - 没有其他人。
注意通常用法是一方生成会话密钥,例如AES的密钥,使用另一方的公钥来加密它 - 并将加密密钥发送给可以解密它的另一方。然后,此AES密钥可用于通信。
答案 1 :(得分:1)
AES是一种对称算法。两端必须具有相同的密钥。您 需要一种安全的方法来在两个端点之间共享该密钥。那是 公钥加密解决的问题。
答案 2 :(得分:1)
与 AES 相比,一个重要因素是 RSA 非常慢。比较慢的东西(取决于密钥长度,如果你有hw支持等)。
这就是 RSA 经常与 AES 等快速对称算法结合使用的原因。这被称为混合加密。使用此方法,您可以生成对称密钥(例如AES),用于加密消息有效负载。密钥本身然后使用非对称密钥(RSA)进行加密,并将其与加密消息一起传递。这为您提供了对称加密的速度,以及非对称算法的便利性。
如果加密和解密的人是同一个人,那么您希望快速 AES 而不是慢 RSA