Метод toString ("X2") от C# до Laravel - PullRequest
0 голосов
/ 21 апреля 2020

Я преобразовал этот метод из C# в Laravel:

C# код:

using (SHA1Managed sha1 = new SHA1Managed())
{
    var hash = sha1.ComputeHash(Encoding.UTF8.GetBytes(input));
    var sb = new StringBuilder(hash.Length * 2);
    foreach (byte b in hash)
        sb.Append(b.ToString("X2"));
    return sb.ToString();
}

и в laravel:

$text = hash('sha1', $txt);
$byte_array = unpack('C*', $text);
foreach ($byte_array as $b)
    $r .= chr($b);

но результат в laravel неверен!

Значение sb (в c#) и $ r (в laravel) не равно.

Как я могу преобразовать этот метод?

1 Ответ

0 голосов
/ 21 апреля 2020

Я просто запускаю его. В вашем PHP коде есть только две проблемы.
1. $r не определен.
2. $r в нижнем регистре, но в C# это было uppercase

поэтому окончательный код будет примерно таким, как раньше

$r = "";
$text = hash('sha1', $txt);
$byte_array = unpack('C*', strtoupper($text));
foreach ($byte_array as $b)
    $r .= chr($b);

...