[英]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.