【问题标题】:toString("X2") method from C# to Laravel从 C# 到 Laravel 的 toString("X2") 方法
【发布时间】:2020-04-21 07:18:08
【问题描述】:

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

如何转换这种方法?

【问题讨论】:

  • 您可能应该说明哪里出了问题。 “不正确”的含义非常广泛。
  • 再补充一下 Pallet 写的内容,你怎么知道是 PHP 代码“不正确”?
  • 阅读本文并重写您的问题stackoverflow.com/help/how-to-ask
  • 欢迎来到 Stack Overflow!为了给您一个很好的答案,如果您还没有看过How to Ask,它可能会对我们有所帮助。如果您可以提供minimal reproducible example,它可能也很有用。

标签: c# php laravel laravel-7


【解决方案1】:

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

【讨论】:

  • 如果您看到的问题未显示所有部分,或者问题被描述为“不正确”。不要回答它。从长远来看,最好不要回答,让提问者编辑问题,直到质量足够好
猜你喜欢
  • 1970-01-01
  • 2014-01-12
  • 1970-01-01
  • 2021-07-20
  • 2016-07-21
  • 1970-01-01
  • 1970-01-01
  • 2012-11-17
  • 2019-03-22
相关资源
最近更新 更多