簡體   English   中英

如何在適合PHP SHA512的C#中重現SHA512哈希?

[英]How can I reproduce a SHA512 hash in C# that fits the PHP SHA512?

這個問題幾乎是不言自明的。 我用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編碼的字符串,並且沒有進行多次散列迭代(例如,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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM