简单的整数加密

有没有简单的算法来加密整数? 也就是说,一个函数E(i,k)接受一个n位整数和一个关键字(任何类型),并产生另一个不相关的n位整数,当它馈入第二个函数D(E(i) k)(和关键字一起)产生原始整数?

很明显,您可以执行一些简单的可逆操作,但它们似乎都会产生清晰相关的输出(例如连续输入导致连续输出)。 此外,当然,还有密码学强大的标准算法,但它们不会产生足够小的输出(例如32位)。 我知道任何32位密码术都可能是蛮横的,但我并不是在寻找密码强的东西,而只是看起来随机的东西。 从理论上讲,这应该是可能的; 毕竟,我可以通过随机配对每个整数来创建一本字典。 但我希望能少一些内存密集型的东西。

编辑:谢谢你的答案。 简单的XOR解决方案将不起作用,因为类似的输入会产生类似的输出


这不等于块大小= 32位的分组密码

不太受欢迎,因为它很容易中断。 但理论上可行。 以下是Perl中的一个实现:http://metacpan.org/pod/Crypt::Skip32

更新:另请参阅保留加密的格式

更新2:RC5支持32-64-128位的块大小


前段时间我写了一篇关于如何从分组密码生成'加密安全置换'的文章,这听起来像你想要的。 它涵盖了使用折叠来减小分组密码的大小,以及处理非2次幂范围的技巧。


一个简单的:

rand = new Random(k);
return (i xor rand.Next())

(使用rand.Next()而不是k是否定的,否则给定iE(i,k) ,可以通过k = i xor E(i,k)得到k

链接地址: http://www.djcxy.com/p/37261.html

上一篇: Simple integer encryption

下一篇: Symmetric Bijective String Algorithm?