PHP эквивалент кода .NET

Я конвертирую .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));
}

Пожалуйста, помогите, спасибо.

1

Решение

Причина различия заключается в том, что PHP использует ASCII-кодировку для вычисления хеша.

В C # вы можете заменить UTF8Encoding с ASCIIEncoding чтобы иметь такие же результаты.

1

Другие решения

Наконец я нашел решение:

Это последний код, который эквивалентен .net-коду:

function HashString($str) {
return base64_encode(sha1($str,true));
}

Я добавил «true» с функцией sha1.

0