c# – 是否有与Microsoft生成密码哈希的标准方法?

有没有使用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”.

上一篇:【LeetCode】739. 每日温度


下一篇:如何在PHP 5.5的新password_hash函数中随机生成的密码盐甚至有用吗?