Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 返回与输入相同长度的密码_Java_Encryption - Fatal编程技术网

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

Java 返回与输入相同长度的密码,java,encryption,Java,Encryption,我试图对一个字符串输入进行加密,并希望输出的长度与 输入 我发现DES,3DES,AES,安全哈希。。。它们都返回一个比输入字符串大的字符串 我正在寻找一些能够做到这一点的Java代码,并保持良好的密码保护。您需要一个流密码。当在计数器模式(CTR)中使用时,可以包括大多数分组密码(AES等),或者可以使用专用的流密码,如RC4 然而,事情比你想象的要复杂 流密码基本上是一个随机数生成器。它生成一个随机字节流,与数据进行异或运算(理论上,JavaAPI会为您实现这一点) 存在的问题是,如果您两次

我试图对一个字符串输入进行加密,并希望输出的长度与 输入

我发现DES,3DES,AES,安全哈希。。。它们都返回一个比输入字符串大的字符串


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

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

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

流密码基本上是一个随机数生成器。它生成一个随机字节流,与数据进行异或运算(理论上,JavaAPI会为您实现这一点)

存在的问题是,如果您两次使用相同的随机数序列,则它是不安全的。因此,如果您要对一段以上的信息进行编码,则每次都需要一个新的密钥,或者需要一段额外的信息,作为数字流的一种偏移量(这通常称为IV,尽管它不是真的)

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


无论如何,考虑到上述情况,如果这仍然有用,您需要找到一个支持RC4或AES/CTR的Java加密提供程序。

尝试在google中搜索Java中的一次性密码板。其中很多都没有相关的填充方案,因此不需要增加密文的大小。