Nếu tôi băm chuỗi "mật khẩu" trong C# sử dụng SHA256 bằng cách sử dụng phương pháp dưới đây tôi có được điều này là đầu ra của tôi:SHA256 hash của String trong C# không đồng ý với băm trên trang web
e201065d0554652615c320c00a1d5bc8edca469d72c2790e24152d0c1e2b6189
Nhưng this website(SHA-256 produces a 256-bit (32-byte) hash value) nói với tôi the has is:
5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
Tôi đang gặp sự cố về định dạng dữ liệu hoặc nội dung tương tự. Bất kỳ ý tưởng nào tại sao phương pháp C# SHA256Managed này lại trả về một cái gì đó khác? Tôi đang gửi phương thức "mật khẩu" làm thông số đầu vào.
private static string CalculateSHA256Hash(string text)
{
UnicodeEncoding UE = new UnicodeEncoding();
byte[] hashValue;
byte[] message = UE.GetBytes(text);
SHA256Managed hashString = new SHA256Managed();
string hex = "";
hashValue = hashString.ComputeHash(message);
foreach (byte x in hashValue)
{
hex += String.Format("{0:x2}", x);
}
return hex;
}
Vui lòng không sử dụng hàm băm SHA256 để lưu trữ mật khẩu (giả sử bạn đang thiết kế này từ đầu). Vui lòng đọc kỹ các phương pháp lưu trữ mật khẩu hiện đại, bạn nên sử dụng một cái gì đó như thế này: https://msdn.microsoft.com/en-us/library/system.security.cryptography.rfc2898derivebytes(v=vs.110).aspx hoặc một số phương thức đa vòng lặp khác. – willaien
Cảm ơn bạn đã liên kết. Chúng tôi đang sử dụng SHA256, chương trình phụ trợ là việc đánh dấu duy nhất cho người dùng và chúng tôi không phải là băm đôi. Có vẻ như một cải tiến mà chúng ta có thể thực hiện là sử dụng PBKDF2 thay vì SHA256. – LampShade