Encryption 这是什么类型的散列(或加密)?

Encryption 这是什么类型的散列(或加密)?,encryption,cryptography,hash,Encryption,Cryptography,Hash,我正在逆向工程一个不幸的遗留应用程序。我知道: username=>hashFunction()=>8BYUW6iFeL9mmSBW7xjzMw~~~ password=>hashFunction()=>VszQfe5n0+CooePc7CS9kw~~~ 散列的长度似乎总是22个字符。该系统是一个遗留的microsoft.net应用程序。我有理由相信它们也是可逆的(但这可能不是真的) 这两个尾随的波浪让我觉得我应该能够识别这一点。如何开始计算所使用的哈希类型?如果“hashFunction”函数

我正在逆向工程一个不幸的遗留应用程序。我知道:

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

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

散列的长度似乎总是22个字符。该系统是一个遗留的microsoft.net应用程序。我有理由相信它们也是可逆的(但这可能不是真的)


这两个尾随的波浪让我觉得我应该能够识别这一点。如何开始计算所使用的哈希类型?

如果“hashFunction”函数是遗留应用程序的一部分,您可以使用.net reflector之类的反射工具来反转代码,以查看该函数在做什么。

只是一个猜测

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

64^21<2^128假设尾随的“~”字符是填充符(这不是通常的情况(通常是“=”),则用户名显示为:

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
密码显示为:

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

这里有一个有趣的值:

Fj83STvXE+6q57GVjIi9aQ==
我只是碰巧知道它是圆周率到37个地方(乘以1E37)

并非所有base64值都是散列或加密的。如果不了解产生该值的过程,就不可能对一个随机的128位字符串做很多事情

问候,,
/Bob Bryan

所有哈希的长度都是22个字符吗?它可能是哈希的base-64编码。Base64的22个字符等于128位。您首先应该尝试MD5哈希。MD5可能也适用于遗留应用程序。仔细想想,它可能只是用户名和密码的混合、可选的Base64编码。