Tôi đang viết lại một trang web PHP trong ASP.NET MVC. Tôi muốn duy trì cùng một cơ sở người dùng nhưng các mật khẩu được băm bằng cách sử dụng hàm PHP crypt(). Tôi cần cùng một chức năng trong. Net để tôi có thể băm mật khẩu khi đăng nhập và kiểm tra nó với mật khẩu băm trong cơ sở dữ liệu người dùng.Hàm PHP crypt() trong .Net?
hầm mộ trong trường hợp này là sử dụng thực hiện CRYPT_MD5 - băm tất cả bắt đầu với $ 1 $
Tôi đã thử Phalanger nhưng nó không có một thực hiện MD5 của hàm crypt.
Có ai biết một trong .Net? Ví dụ C# của crypt() trên CodeProject sử dụng DES, chứ không phải MD5.
Tôi đã thử mã sau trong C#, với các hoán vị khác nhau của muối + mật khẩu, mật khẩu + muối và muối có và không có tiền tố $ 1 $ và $ hậu tố. Không đưa ra kết quả tương tự như PHP:
static void Main(string[] args)
{
const string salt = "somesalt";
const string password = "fubar";
const string plaintextString = password + salt;
byte[] plaintext = GetBytes(plaintextString);
var md5 = MD5.Create("MD5");
byte[] hash = md5.ComputeHash(plaintext);
string s = System.Convert.ToBase64String(hash);
Console.WriteLine("Hash of " + password + " is " + s);
Console.ReadKey();
}
private static byte[] GetBytes(string s)
{
var result = new byte[s.Length];
for (int i = 0; i < s.Length; i++)
result[i] = (byte)s[i];
return result;
}
MD5 không được xem là một hash an toàn và bạn có thể muốn nâng cấp hệ thống của bạn để SHA-256. – TravisO
btw, 'Bảng điều khiển.WriteLine ("Hash của {0} là {1}", mật khẩu, s); ' – abatishchev
Abatishchev, đây là một sự tăng đột biến nhanh chóng để kiểm tra xem tôi có thể tạo ra cùng một giá trị băm như PHP cho một chuỗi đầu vào đã cho hay không. Nhận xét của bạn hoàn toàn không có chủ đề và ít hữu ích hơn. –