DSA 和 RSA
不在于哪个更强。
我一直在互联网上研究这个主题,下面是我所掌握的信息摘要。您能否告知它是否正确,以及是否有任何其他重要问题我在这里没有提及。
在这里,我只谈论 Java 应用中的 DSA 与 RSA。我的主要目标 - 使用公钥算法将会话密钥(AES)从客户端发送到服务器,然后检查客户端的真实性。
动态搜索广告。
1.在Java中,您应该使用私钥加密文件。
2. 这意味着它是一个签名——任何拥有公钥的人都可以读取它,但只有所有者才能签名。
3.如果你尝试使用公钥作为私钥,反之亦然,你会遇到麻烦,因为用私钥猜测公钥并不难。
4. 你实际上不能使用 DSA 发送会话密钥,因为每个人都可以解密它。
RSA。
1.在Java中,您应该使用公钥加密文件。
2. 这意味着这是将秘密消息传递给特定接收者的最佳方式。签字后没有人可以阅读,除了所有者。
3.如果尝试相互交换密钥会带来麻烦(同上)
4.您可以有效地使用RSA客户端发送使用服务器的开放密钥加密的会话密钥,然后接收使用客户端的开放密钥签名的服务器的确认.
基于此,我决定将 RSA 用于我的目的。
AES256 与 AES128
另一个不相关的问题 - 您认为对于没有任何极其敏感数据的会话加密,使用 AES256 是否有意义?
我愿意,但这会给最终用户带来问题。我知道安装允许 256 位密钥的 Java 更新非常容易,但可悲的事实是,即使是这样简单的事情也会将潜在用户群减少一半。
另一方面 - 如果我不发送敏感信息(如信用卡号码)并且每个密钥的使用时间不超过几天,也许 AES128 就足够了吗?
显然,我将为那些不需要安装更新而烦恼的用户提供使用 AES256 的选项。
感谢您的任何评论!