这是什么类型的哈希(或加密)?

时间:2012-08-01 21:56:14

标签: encryption cryptography hash

我正在逆向设计一个不幸的遗留应用程序。我知道以下内容:

username => hashFunction()=> 8BYUW6iFeL9mmSBW7xjzMw~~

password => hashFunction()=> VszQfe5n0+CooePc7CS9kw~~

哈希值似乎总是22个字符。该系统是传统的microsoft .net应用程序。我有理由相信它们也是可以反转的(但这可能不是真的)。

两个拖尾的波浪让我觉得我应该能够识别出这一点。我如何开始弄清楚使用什么类型的散列?

4 个答案:

答案 0 :(得分:2)

如果'hashFunction'函数是遗留应用程序的一部分,您可以使用像.net反射器这样的反射工具来反转代码以查看函数正在做什么。

答案 1 :(得分:2)

只是猜测

64^21  <  2^128  <=  64^22 

对于128位散列的base-64编码,您需要22个字符。

如果用57到68之间的任何整数替换64,上面的参数也会起作用.Base-67编码并不常见,但是考虑到这一点并没有坏处。

您的样本似乎至少有63个字符(26个字符,26个小写字母,10个数字,加上加号)。

答案 2 :(得分:2)

假设尾随的'〜'字符是填充符(通常情况下不是'=')),用户名出现在:

f0 16 14 5b a8 85 78 bf 66 99 20 56 ef 18 f3 33

密码出现在:

56 cc d0 7d ee 67 d3 e0 a8 a1 e3 dc ec 24 bd 93

以十六进制表示。这与其他海报的128位一致。这听起来像是AES-128加密或MD5哈希的输出。有一个小样本,不知道源是什么,这就是我们必须离开的地方。既然你说你认为它们可能是可逆的,那就指向AES-128。如果没有更大的样本和没有输入数据,那就可以用它完成所有工作。

我尝试对字符串“username”和“password”进行MD5哈希,它们会出现不同的值。如果它是用AES加密的,那么如果没有更多的提示,我们就会失败。

祝你好运, / Bob Bryan

答案 3 :(得分:1)

这是一个有趣的值:

Fj83STvXE+6q57GVjIi9aQ==

我碰巧知道它是PI到37个地方(时间1E37)

3141592653589793238462643383279502884

并非所有base64值都经过哈希处理或加密。如果不了解产生该值的过程,就不可能对随机的128位字符串做很多事情。

此致 / Bob Bryan