Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在获取Java中客户端/服务器之间共享的公钥后加密txt文件_Java_Encryption_Diffie Hellman - Fatal编程技术网

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

如何在获取Java中客户端/服务器之间共享的公钥后加密txt文件,java,encryption,diffie-hellman,Java,Encryption,Diffie Hellman,我终于明白了如何在Java中执行Diffie-Hellman密钥交换,现在的问题是我必须使用共享密钥加密txt文件。我甚至不知道如何开始这样做。txt文件只是一行上的整数1 2 3 4 5。是否有一行我不知道的简单代码可以执行此功能?我拥有的共享密钥是18.0 在获取Java中客户端/服务器之间共享的公钥后加密txt文件 让我们假设您正在从事一个学习或玩具项目,否则就没有必要(重新)发明您自己的安全通信。如果您想认真对待安全性,只需使用TLS/SSL(可选地使用双向客户端身份验证SSL)进行在线

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

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

让我们假设您正在从事一个学习或玩具项目,否则就没有必要(重新)发明您自己的安全通信。如果您想认真对待安全性,只需使用TLS/SSL(可选地使用双向客户端身份验证SSL)进行在线内容传输

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

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

对于rest中的加密(加密文件本身)——假设发送方和接收方拥有自己的密钥对

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

我给自己做了一些笔记,你可以从中获得一些灵感

我拥有的共享密钥是18.0

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


不管怎样,短密钥种子(小共享密钥,短公钥)对于暴力强制是可行的。在处理加密时,有很多方法可以击伤自己的腿,因此尽可能使用一些工业标准(例如TLS)。

是否有一行简单的代码?
-不。加密并不简单,不应该自己进行。您能否进一步说明您正在交换哪些类型的密钥以及用例是什么?我强烈建议在进行加密时使用经过良好测试的库。自行实现密钥交换或加密本身通常会导致严重的安全缺陷。重复?这是一个学习项目吗?或者你真的打算用它吗?你真正想要实现什么?当它是数据(数据文件)的安全传输时,为什么不使用普通的TLS/SSL呢?(与客户端身份验证相对应)?这是一个学校项目。我只需要在客户端和服务器之间创建一个套接字连接,我就是这么做的。然后我必须进行Diffie-Hellman密钥交换,然后使用公钥在服务器端加密txt文件,然后将加密文件发送到客户端。然后我必须在客户端解密文件。服务器还应该发送加密文件的散列,客户端应该通过散列比较来验证它是否收到了相同的文件。