Java加密-最佳做法?

问题描述 投票:0回答:1

我正在使用Java的客户端-服务器应用程序进行工作,该应用程序将使用私钥加密

当前,我有一个带有Cipher类静态对象的类,该对象初始化如下: myCipher.init(Cipher.DECRYPT_MODE, secretKey, ivParameterSpec);

现在我的问题是:我有双向通信,是否应该为每种方式使用一个单独的Cipher对象(一种用于加密,一种用于解密)并使用相同的初始化矢量? 还是应该仅使用同一个对象并调用Cipher.init()来更改模式,具体取决于我是加密还是解密?

脑子里有分开的物体是很有意义的,但是我只是想确定一下。 我尝试使用谷歌搜索,但大多数示例仅以一种方式显示加密。

当前,我将初始化向量未加密地发送到服务器,这是正确的还是存在安全漏洞?

还是我完全以错误的方式进行处理?

谢谢。

java encryption private-key
1个回答
1
投票

您的问题有两个:

  1. 您应该使用一个对象。 这样可以节省内存。 但是,如果内存可用,请继续执行两个。 至少这将使您的代码更具可读性。

  2. IV不需要加密。 IV是一个随机值,由发送方和接收方同步。 关于IV的最重要的事情是,不能使用相同的密钥重复或重复使用它!

© www.soinside.com 2019 - 2024. All rights reserved.