7

这个问题几乎是不言自明的。我用谷歌搜索了很多网站,很多方法,尝试了很多编码,但我无法匹配。

我正在尝试使字符串“asdasd”匹配。(http://www.fileformat.info/tool/hash.htm?text=asdasd

4

3 回答 3

16

试试这个

using System.Security.Cryptography

public static string HashPassword(string unhashedPassword)
{
    return BitConverter.ToString(new SHA512CryptoServiceProvider().ComputeHash(Encoding.Default.GetBytes(unhashedPassword))).Replace("-", String.Empty).ToUpper();
}
于 2009-09-13T23:12:02.500 回答
1

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 位哈希,抱歉 :)

于 2009-09-13T23:33:02.203 回答
1

我只是花了几个小时试图获得一个 .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

良好的背景阅读:- http://www.akkadia.org/drepper/SHA-crypt.txt

于 2014-02-01T02:39:31.343 回答