[英]Generate Unix-Style MD5 Password Hash in C#
我正在尝试使用MD5生成Unix样式的密码哈希。 我不知道我需要它看起来像$1$<salt>$<hash>
,但无论我做什么, <hash>
部分看起来都不一样。 以下是我生成哈希的方法:
MD5 md5 = System.Security.Cryptography.MD5.Create();
byte[] inputBytes = System.Text.Encoding.UTF8.GetBytes(pass);
byte[] hash = md5.ComputeHash(inputBytes);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hash.Length; i++)
{
sb.Append((char) hash[i]);
}
String calchash = sb.ToString();
我很确定现在我正在使用StringBuilder
从散列字节中创建一个字符串。 但我不知道正确的设置是什么。
Unix md5 crypt不使用plain md5。 这将是不安全的,因为普通的md5很快,密码哈希应该很慢。
我找到了相关的代码项目文章: http : //www.codeproject.com/KB/recipes/Unix_md5crypt.aspx
这是关于格式化。 Unix密码哈希是十六进制格式,而你用二进制文件写下来。 用以下方法替换环体:
sb.Append(hash[i].ToString("x").PadLeft(2,'0'));
我认为你应该使用hash [i] .ToString(“X”)而不是转换为char。 因为散列字节可以在0到255的任何范围内,这与md5散列不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.