C# 是否有使用Microsoft生成密码哈希的标准方法?
是否有使用Microsoft开发工具生成密码哈希的标准方法? 或者可能有最常见的方法。(我读到有MD5,STA1) 不幸的是,我没有服务器的源代码,但必须使用SOAP web服务。 必须使用某种算法来生成哈希代码。我需要使用Java或一些库来实现它 这是我需要发送到服务器的SOAP请求的一部分。看看oldPasswordHashC# 是否有使用Microsoft生成密码哈希的标准方法?,c#,java,visual-c++,hash,passwords,C#,Java,Visual C++,Hash,Passwords,是否有使用Microsoft开发工具生成密码哈希的标准方法? 或者可能有最常见的方法。(我读到有MD5,STA1) 不幸的是,我没有服务器的源代码,但必须使用SOAP web服务。 必须使用某种算法来生成哈希代码。我需要使用Java或一些库来实现它 这是我需要发送到服务器的SOAP请求的一部分。看看oldPasswordHash - <ChangePassword xmlns="urn:____________"> <sessionGUID>{864da5f3-21b
- <ChangePassword xmlns="urn:____________">
<sessionGUID>{864da5f3-21b6-486a-8bd3-c507ae3d224e}</sessionGUID>
<oldPasswordHash>089ad55bd0a8f6d3c2e2bbf0e4e1475c7e984ef1</oldPasswordHash>
<newPasswordHash>f4a69973e7b0bf9d160f9f60e3c3acd2494beb0d</newPasswordHash>
</ChangePassword>
-
{864da5f3-21b6-486a-8bd3-c507ae3d224e}
089ad55bd0a8f6d3c2e2bbf0e4e1475c7e984ef1
F4A69973E7B0BF9D160F9F60E3C3ACD2494B0D
至于散列算法,您需要一个,这是一个(出于所有目的)不可能反转的散列函数。还要注意的是,有一些文件(甚至网站)努力计算每个字符串的每个哈希代码,并发布这些所谓的。(我觉得SHA256是个不错的选择。)
至于编程生成,请查看.NET中的
至于创建哈希的工具,我不知道Windows附带什么。显然,您可以通过Cygwin(或类似工具)使用GNU工具,或者为您选择的算法搜索命令行工具。Cygwin for windows在其coreutils包中提供了命令行散列工具,如
sha1sum
,可以方便地为您计算散列。这些库将提供Java和.NET中最常见的哈希算法的实现
示例XML没有说明太多。字符串为十六进制,长度为40个字符,即20字节或160位。这可能意味着它是SHA-1(160位),但不一定。此外,它是如何从密码生成哈希的。密码是明文,明文中有一些盐,明文中有一些其他的散列等等。我想如果您首先从命令行安装sha1sum,您可以看到如果您将密码输入其中会发生什么。你可能会幸运地发现它在做什么。然后,您可以继续使用Bouncy Castle对等价密码进行编码。这些是未加密密码的SHA1哈希
f4a69973e7b0bf9d160f9f60e3c3acd2494beb0d
是Passw0rd的SHA1散列代码>
事实上,我能够用反转其中一个哈希值,这表明在没有盐分的情况下对密码进行哈希是非常不安全的
在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版本,请查看。这看起来像一个SHA1散列。只是猜测。除非你有一个旧的JRE,否则你不需要弹性城堡。较新版本的Java包含一个像样的JCE实现。