首页 > 解决方案 > 从 C# 到 Laravel 的 toString("X2") 方法

问题描述

我将此方法从 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 中)的值不相等。

我如何转换这种方法?

标签: c#phplaravellaravel-7

解决方案


我只是运行它。您的 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);


推荐阅读