【发布时间】:2014-08-19 04:12:07
【问题描述】:
类似于非加密单向哈希(例如,用于构建哈希表),我发现自己需要一个非必要加密强度的双向对称密钥“加密”函数。我的计划是在数据结构的设计中使用它。
所需的属性是:
- 快速
- 实现起来并不难(如果重要的话,在 Java 中实现)
- 甚至不需要完全可逆;如果给定明文大小,如果它产生一个小的、预期的恒定数量的可能性,那就没问题了。
- 很好地处理小数据大小(例如,“加密”单个 64 位长)
- 良好的位分散特性(即,XOR 与随机数是次优的,因为序列号最终会与大多数位共享)。与输入和输出中设置的位数的关系应该是随机的。
这样的算法是否存在,或者可以将 Java 标准库中的某些东西硬塞到该角色中?
【问题讨论】:
-
为什么不直接使用像 AES 这样的真实的呢?尤其是最后一个要求。
-
我怀疑像 AES 这样的东西,即使有处理器支持,对于这些目的来说也是非常过分的(阅读:比它需要的慢)。例如,大量非密码散列函数很好地分散了比特。我也只是好奇这是否是一种已定义的算法。
-
输出的大小必须是多少?
-
@Bryce 那么也许是标准加密算法的缩减轮变体?例如 5 轮 AES128。
标签: java algorithm encryption hash