返回与输入相同长度的密码

时间:2013-11-27 16:41:19

标签: java encryption

我试图加密一个String的输入,并希望输出的长度与 输入。

当我发现DES,3DES,AES,安全哈希......所有这些都返回一个比输入字符串更大的字符串。

我正在寻找能够做到这一点的Java代码,并保持良好的密码保护。

1 个答案:

答案 0 :(得分:1)

你需要一个流密码。在计数器模式(CTR)中使用时可以包括大多数分组密码(AES等),或者您可以使用RC4之类的专用流密码。

然而,事情比你想象的要复杂得多。

流密码基本上是随机数生成器。它会生成一个与数据进行异或的随机字节流(理论上;实际上Java API会为您执行此操作)。

如果您使用相同的随机数序列两次,则问题是 NOT SECURE 。因此,如果您要编码不止一次的信息,您每次都需要一个新密钥,或者另外一条信息作为数字流中的一种偏移(这通常称为IV,尽管它不是真的。)

通常将额外信息添加到(开始)消息中。因此,即使使用这些密码,您的加密消息也会比原始文本长(持续数量)。

无论如何,鉴于上述情况,如果仍然有用,则需要找到支持RC4或AES / CTR的Java加密提供程序。