我觉得上次我没有说得够清楚,让我们来看看:
我有一个十六进制字符串:
742713478fb3c36e014d004100440041004 e0041004e00000060f347d15798c9010060 6b899c5a98c9014d007900470072006f007 500700000002f0000001f7691944b9a3306 295fb5f1f57ca52090d35b50060606060606
理论上,最后的20个字节应该包含前面部分(完整字符串-20个字节)的SHA1哈希值。但是对于我来说它不匹配。
试图用PHP做到这一点,但没有成功。你能找到匹配吗?
票据:
742713478fb3c36e014d004100 440041004e0041004e00000060 f347d15798c90100606b899c5a 98c9014d007900470072006f00 7500700000002f0000001f7691944b9a
附加到原始票证的sha1哈希:
3306295fb5f1f57ca52090d35b50060606060606
我的票证sha1哈希:
b6ecd613698ac3533b5f853bf22f6eb4afb94239
这里是票证中的内容以及它是如何存储的。值得一提的是,我可以提取出用户名等信息,并找到各种分隔符。 http://www.codeproject.com/KB/aspnet/Forms_Auth_Internals/AuthTicket2.JPG
编辑:我发现字符串在此之前经过的解密函数会在末尾进行填充。我删除了最后6个字节,并相应地调整了我的票证和哈希。仍然不起作用,但我更接近了。