[英]How and where are Windows passwords stored on the disk, and what algorithms are used to hash them?
我想在C#应用程序中实现散列算法的版本,并且需要知道Windows如何散列并检查密码。 我还需要知道它们的存储位置。 据我所知,在C:\\ Windows \\ System32 \\ config下的SAM文件中。 那是对的吗?
这里没什么棘手的。 NTLM哈希只是unicode密码的MD4。 MD4是不负责任的弱点,所以你需要一个全面的加密库,比如Bouncy Castle 。 MS没有本地方法。
使用Org.BouncyCastle.Crypto.Generators;
使用Org.BouncyCastle.Crypto.Parameters;
使用Org.BouncyCastle.Security;
使用Org.BouncyCastle.Crypto.Digests;
我认为那些涵盖了它。 我希望...
这是一个将其作为byte []返回的,您可以根据需要进行转换。
/// <summary>
/// Convert Password to NT Hash. Convert to unicode and MD4
/// </summary>
/// <param name="passwordIn">password In</param>
/// <returns>NT Hash as byte[]</returns>
public static byte[] NTHashAsBytes(string passwordIn)
{
MD4Digest md = new MD4Digest();
byte[] unicodePassword = Encoding.Convert(Encoding.ASCII, Encoding.Unicode, Encoding.ASCII.GetBytes(passwordIn));
md.BlockUpdate(unicodePassword, 0, unicodePassword.Length);
byte[] hash = new byte[16];
md.DoFinal(hash, 0);
return hash;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.