Я конвертирую .net проект в PHP. Но не удалось преобразовать следующий код:
public static string HashString(string value)
{
SHA1 hasher = new SHA1CryptoServiceProvider();
UTF8Encoding enc = new UTF8Encoding();
byte[] hashInBytes = hasher.ComputeHash(enc.GetBytes(value));
return Convert.ToBase64String(hashInBytes);
}
Пока я сделал это, но результат не тот же:
function HashString($str) {
return base64_encode(sha1($str));
}
Пожалуйста, помогите, спасибо.
Причина различия заключается в том, что PHP использует ASCII-кодировку для вычисления хеша.
В C # вы можете заменить UTF8Encoding
с ASCIIEncoding
чтобы иметь такие же результаты.
Наконец я нашел решение:
Это последний код, который эквивалентен .net-коду:
function HashString($str) {
return base64_encode(sha1($str,true));
}
Я добавил «true» с функцией sha1.