Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.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_Algorithm_Encryption_Hash - Fatal编程技术网

Java 非加密加密算法

Java 非加密加密算法,java,algorithm,encryption,hash,Java,Algorithm,Encryption,Hash,类似于非加密单向散列(例如,用于构建散列表),我发现自己需要一个不一定具有加密强度的双向对称密钥“加密”函数。我的计划是在数据结构的设计中使用它 所需属性为: 快速 不太难实现(如果有必要,用Java实现) 甚至不需要完全可逆;如果给定明文大小,如果它生成一个小的、预期的恒定数量的可能性,那就可以了 能够很好地处理小数据量(例如,对单个64位长的数据进行“加密”) 良好的位分散特性(即,带有随机数的XOR是次优的,因为序列号最终将共享大部分位)。与输入和输出中设置的位数的关系应为~随机 这样

类似于非加密单向散列(例如,用于构建散列表),我发现自己需要一个不一定具有加密强度的双向对称密钥“加密”函数。我的计划是在数据结构的设计中使用它

所需属性为:

  • 快速
  • 不太难实现(如果有必要,用Java实现)
  • 甚至不需要完全可逆;如果给定明文大小,如果它生成一个小的、预期的恒定数量的可能性,那就可以了
  • 能够很好地处理小数据量(例如,对单个64位长的数据进行“加密”)
  • 良好的位分散特性(即,带有随机数的XOR是次优的,因为序列号最终将共享大部分位)。与输入和输出中设置的位数的关系应为~随机

这样的算法是否存在,或者Java标准库中的某些东西是否可以被塞进这个角色中?

一种选择是采用一种易于实现的密码,例如,以较少的轮数运行它,例如从16轮运行到3轮。3-因为3发子弹都用在了


另一种方法是使用h(x)=a*x+b mod p(如果a是奇数,则使用mod 2^n)。对于p素数,这是x限制为(0,p-1)的一个例子。如果x实际上是一个单词的长度,您可以单独处理每个单词-根本不安全,但是安全性不是您的目标。它是否足够随机取决于您的数据以及您试图通过散列来实现什么。

为什么不使用像AES这样的真实数据呢?特别是对于最后一个要求,我怀疑像AES这样的东西,即使有处理器支持,对于这些目的来说,也是过度杀伤力(读:比需要的慢)。例如,许多非加密散列函数可以很好地分散位。我也很好奇这是否是一个定义好的算法类。输出的大小必须是多少?@Bryce也许是标准加密算法的一个简化版本,那么?例如,5轮AES128。谢谢,它看起来像是标准分组密码的减少轮数版本。