如何在Java中查找密码是否需要IV?

时间:2019-04-21 18:34:42

标签: java security encryption

我正在构建一个利用加密技术来保护正在传输的数据的流服务器。正在从配置文件中加载密码套件,该文件允许用户插入所需的算法+密码模式(ECB,CBC,CTR等)+填充。 问题在于某些模式(例如ECB或流密码算法)不需要IV,这在我尝试初始化密码时会出错。因此,我的代码不够动态,无法处理这些情况。我已经尝试在网上寻找一种方法,以查找给定的算法/模式是否需要IV,但一无所获。

有人知道该怎么做吗?

预先感谢

1 个答案:

答案 0 :(得分:1)

除ECB之外,几乎所有mode of operations都需要IV,有些甚至可能不将其称为操作模式。另外,有关加密模式的一小部分,请参阅“密码学”中的this questionrandomized encryption需要IV,因此所有的IV或现时数(使用一次)。一个人应该从不使用 ECB。

现在,您想加密流。您应该使用AES-GCM,这是一种authenticated encryption(AE)模式,从此链接可以看到Netflix在使用它。使用AE,您可以完全拥有身份验证,完整性和加密。您还可以选择Chacha-poly1305也是自动曝光。

TLS 1.3同时具有AES-GCM和Chacha-poly1305作为密码套件。您应该选择TLS作为客户端和服务器之间的安全通信。记录层的碎片层的限制为2 ^ 14字节16.384 KB。在每个碎片中,您可以检查消息是否真实并具有完整性,如果不完整,请重新向服务器请求。