2011-02-12 44 views
0

我想了解我正在工作的系统是如何从数字代码开始创建一些散列代码的。我正在收集其中一些“small_number,big_number”对,但我无法弄清楚系统如何编码small_number以获取big_number。解码是可能的,因为系统可以从big_number获取small_number。反向散列函数

数字看起来像这样:

 
197 >> 29337857947107767585 

1078 >> 84080031635590040762 

1083 >> 32373003898332638476 

1409 >> 79402294967209014727 

1498 >> 25254493910542918727 

2945 >> 85687067382221703925 

2946 >> 88767616208189692328 

我不知道的。你能指出一些阅读吗?

谢谢

+1

如果这个过程可以很容易地颠倒过来,那不是使用哈希算法。你对这个算法有什么看法? – driis

+0

如果您向系统提供长度超过20位的数字代码,会发生什么情况? – CodesInChaos

回答

1

如果系统能够扭转函数,该函数是不是一个散列函数所有,但一个cipher

它看起来像输出始终是一个20位数的数字 - 您是否尝试在非数字输入或大于20位数字的字符串上进行测试?

在这两种情况下,系统可能会使用众所周知的加密算法(我的猜测是AESDES),所以如果没有密钥,猜测函数是不可行的。更糟糕的是,如果系统没有直接接收输入信息,而是添加其他信息,那么您可能拥有正确的算法和密钥,但仍然没有意识到它。

+0

它不能是AES,因为AES的块大小至少为128位,而20位十进制数字串只有66.4位。 – CodesInChaos

+0

它可以 - 你总是可以截断(我已经使用SHA并截断为10个base64字符来为应用程序生成密码) – Vanwaril