Почему C # sha512 хеш-значение отличается от метода PHP crypt? - PullRequest
0 голосов
/ 28 апреля 2019

Я использую ту же соль и пароль, но значение хэша отличается в C # и PHP. Почему это так?

string password = "password";
string salt = "salt";

C #:

HMACSHA512 hmac = новый HMACSHA512 (Encoding.UTF8.GetBytes (salt));

        byte[] bithash = Encoding.UTF8.GetBytes(password);

        for (int i = 0; i < 7778;i++){
            bithash = hmac.ComputeHash(bithash);
        }

        Console.WriteLine( Convert.ToBase64String(bithash) );

uQobtR+v8PovsSOjCZ9tZyOsfUYWw+xZSOMEuljCzXdezVs8LiM85I1JRQsVpKGSalrC5xTu5sU2f127Bw3DoA==

PHP:

crypt('password','$6$rounds=7778$salt$'); 

QVysRURDsOGt7/ig9jE7JNutVD2XWO5h9gmBmvC5HtEUFUtVNugF3GWJe6CwFkVNq91kJY8yL5QVPQYXUzhoM1

1 Ответ

0 голосов
/ 28 апреля 2019

я нашел метод с библиотекой: https://www.zer7.com/software.php?page=cryptsharp


string password = "password";
string salt = "$6$rounds=7777$salt";

CryptSharp.Sha512Crypter sha512Crypter = new Sha512Crypter();

var hash = sha512Crypter.Crypt(password, salt);
Console.WriteLine(hash);
Console.ReadLine();

...