首页 > 解决方案 > 获取Java客户端/服务器之间共享的公钥后如何加密txt文件

问题描述

我终于弄清楚了如何在 Java 中执行 Diffie-Hellman 密钥交换,现在的问题是我必须使用共享密钥加密一个 txt 文件。我什至不知道如何开始这样做。txt 文件只是简单的整数 1 2 3 4 5 每个都在一个新行上。是否有一行我不知道的简单代码可以执行此功能?我拥有的共享密钥是 18.0。

标签: javaencryptiondiffie-hellman

解决方案


获取在 Java 中的客户端/服务器之间共享的公钥后加密 txt 文件

假设您正在从事学习或玩具项目,否则(重新)发明您自己的安全通信毫无意义。如果您想认真对待安全性,只需使用 TLS/SSL(可选择使用 2-way client auth ssl)进行在线内容传输。

我真的希望为了你自己,你只是在学习或玩这个。

使用共享密钥加密 txt 文件。我什至不知道如何开始这样做。

对于静态加密(加密文件本身) - 假设发送方和接收方拥有自己的密钥对。

我建议创建一个随机数据加密密钥来加密内容。然后,您可以简单地使用接收者的公钥来加密数据加密密钥,并使用发送者的私钥对内容的哈希进行签名。永远不要使用普通(教科书)RSA,使用propper padding。

我为自己做了一些关于加密的笔记,你可以从中得到一些启发。

我拥有的共享密钥是 18.0。

显然您使用的公钥不够长或不够随机。对称密码需要固定长度的密钥(例如,AES 需要 128、192 或 256 位密钥)。您可以使用任何密钥派生函数或哈希生成更长的密钥。如果要使用双向通信,则每个方向都需要一个单独的键。

无论如何 - 短密钥种子(小共享密钥,短公钥)对于暴力破解是可行的。在处理加密货币时,有很多方法可以让你在自己的腿上开枪,所以尽可能使用一些工业标准(例如 TLS)。


推荐阅读