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

我正在尝试制作字符串“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编码的字符串,并且不进行多次散列迭代(例如,Crypt默认为5000。)我无法从.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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top