有没有使用Microsoft开发工具生成密码哈希的标准方法?
或许也有最常见的方式. (我看过有MD5,STA1)
不幸的是,我没有服务器的源代码,但必须使用SOAP Web服务.
必须是一些生成哈希码的算法.我需要使用Java或使用一些库来实现它.
这是我需要发送到服务器的SOAP请求的一部分.看看oldPasswordHash.
- <ChangePassword xmlns="urn:____________">
<sessionGUID>{864da5f3-21b6-486a-8bd3-c507ae3d224e}</sessionGUID>
<oldPasswordHash>089ad55bd0a8f6d3c2e2bbf0e4e1475c7e984ef1</oldPasswordHash>
<newPasswordHash>f4a69973e7b0bf9d160f9f60e3c3acd2494beb0d</newPasswordHash>
</ChangePassword>
解决方法:
这些是未加密密码的SHA1哈希值.
f4a69973e7b0bf9d160f9f60e3c3acd2494beb0d是Passw0rd!的SHA1哈希值.
我能够用a rainbow table service反转其中一个哈希的事实表明,没有盐析的密码哈希是非常不安全的.
在C#中,您可以像这样重现实现:
public static string Hash(string value)
{
var sha = new System.Security.Cryptography.SHA1CryptoServiceProvider();
byte[] hash = sha.ComputeHash(Encoding.ASCII.GetBytes(value));
return BytesToHex(hash).ToLower();
}
private static string BytesToHex(byte[] bytes)
{
return String.Concat(Array.ConvertAll(bytes, x => x.ToString("X2")));
}
对于java版本,请查看first google hit for “sha1 java”.