c# - 从 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 中)的值不相等。
我如何转换这种方法?
解决方案
我只是运行它。您的 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);
推荐阅读
- php - 从一组变量发布到多个 PHP 数据库表
- r - R中的折线图,三线组和组背景
- git - Git-config设置为git stash指定--include-untracked?
- spring-boot - 客户端可以在没有证书的情况下使用 RestTemplate 向安全 SSL 服务器发出请求吗?
- python - 如何声明与数据类类型相同的python数据类成员字段
- python - 错误 13 权限被拒绝,Pycharm 说我的 SDK 似乎无效
- g1ant - 为什么我的 G1ANT 软件的插件列表中没有插件 ocrtesseract?
- android - 向上滚动时隐藏底部导航 向下滚动时显示
- swift - shared() 运算符超时
- python - 比较两个 txt.files 的内容以查找已删除的行或 python 中的更改