这个问题几乎是不言自明的。我用谷歌搜索了很多网站,很多方法,尝试了很多编码,但我无法匹配。
我正在尝试使字符串“asdasd”匹配。(http://www.fileformat.info/tool/hash.htm?text=asdasd)
试试这个
using System.Security.Cryptography
public static string HashPassword(string unhashedPassword)
{
return BitConverter.ToString(new SHA512CryptoServiceProvider().ComputeHash(Encoding.Default.GetBytes(unhashedPassword))).Replace("-", String.Empty).ToUpper();
}
BitConverter 工作得很好...
var testVal = "asdasd";
var enc = new ASCIIEncoding();
var bytes = enc.GetBytes( testVal );
var sha = new SHA512Managed();
var result = sha.ComputeHash( bytes );
var resStr = BitConverter.ToString( result );
var nodash = resStr.Replace( "-", "" );
nodash.Dump();
(已修复 512 位哈希,抱歉 :)
我只是花了几个小时试图获得一个 .NET 散列函数来匹配 PHP 的 Crypt 函数。不好玩。
这里有多个挑战,因为 Crypt 的 PHP 实现返回一个 base64 编码的字符串,并且不进行多次散列迭代(例如 5000 是 Crypt 的默认值。)我无法使用多个库从 .NET 获得类似的输出,直到我找到 CryptSharp。它接受类似于 PHP(或原始 C)函数(例如"$6$round=5000$mysalt"
)的盐。请注意,没有尾随 $,如果您不提供盐,它将自动生成一个随机盐。
你可以在这里找到 CryptSharp: http ://www.zer7.com/software.php?page=cryptsharp