我想在任何版本的Java上获得相同的加密值,并且代码应该支持Java6,并且不使用任何外部库。我真的很感激有人能帮我。提前谢谢。
发布于 2017-05-04 02:48:28
如果您使用相同的密钥对相同的明文进行多次加密,则会得到不同的结果。这是一个安全属性,这是由于随机化的初始化向量或随机数造成的。
唯一不使用IV或现时值的流行mode of operation是ECB模式,它在所有Java版本中都可用。如果您使用该模式,则在所有版本的Java中都将始终获得相同的结果。
ECB模式不是很安全,不应该使用。
如果您只是需要一个跨多个版本的Java兼容的实现,那么您可以只使用JNCryptor。它非常安全。由于不能比较随机模式的密文,因此需要在一个Java版本中加密,在另一个版本中解密(不要忘记另一个方向)。
不使用任何外部库的
密码学很难,你说你是密码学的新手。如果你想用它学习以外的东西,你需要使用经过审查和安全的库,而不是试图编写你自己的库。这些库可以帮助您生成更安全的代码。
当然,大多数库都是开源的,所以您只需将它们的代码复制到您的项目中,然后就没有任何依赖项,但在执行此操作之前,请检查这是否与库的许可证兼容。
https://stackoverflow.com/questions/43759580
复制相似问题