对称AES加密和解密在任何Java版本上返回相同的值,并支持Java 6,并且不使用任何外部库

时间:2017-05-03 12:05:28

标签: java encryption aes

我想在任何版本的Java上获得相同的加密值,代码应该支持Java 6并且不使用任何外部库。我是Java和Cryptography的新手。我真的很感激有人的帮助。提前谢谢。

1 个答案:

答案 0 :(得分:2)

如果您使用相同的密钥多次加密相同的明文,则应该得到不同的结果。这是一个安全属性,是由于随机初始化向量或随机数。

唯一不使用IV或nonce的流行mode of operation是ECB模式,可在所有Java版本中使用。如果您使用该模式,您将始终在所有Java版本中获得相同的结果。

ECB模式不是很安全,不应使用。

如果您只需要一个兼容多个Java版本的实现,那么您可以使用JNCryptor。它非常安全。由于无法比较随机模式的密文,您需要在一个Java版本中加密并在另一个Java版本中解密(不要忘记另一个方向)。

  

不使用任何外部库

密码学很难,你说你是密码学的新手。您需要使用经审查和安全的库,而不是尝试编写自己的库,如果您想要将其用于学习以外。图书馆可以帮助您生成更安全的代码。

当然,大多数库都是开源的,因此您只需将其代码复制到项目中,然后就没有任何依赖关系,但在执行此操作之前,请检查它是否与库的许可证兼容。