【问题标题】:SHA1 - Convert C#/ASP.Net Function to PHP SHA1SHA1 - 将 C#/ASP.Net 函数转换为 PHP SHA1
【发布时间】:2014-09-25 23:53:38
【问题描述】:

请帮我将下面给出的 C# / ASP SHA1 函数转换为兼容的 PHP SHA1 函数

public string SHA1(string data)
{
    byte[] hash = new SHA1CryptoServiceProvider().ComputeHash(
                         new UTF8Encoding().GetBytes(data));
    string str = string.Empty;
    foreach (byte num in hash)
       str = str + string.Format("{0,0:x2}", (object) num);
    return str;
}

我想要 PHP 中的上述 SHA1 函数,它可以在 PHP 中返回相同的值。

谢谢

【问题讨论】:

  • 将您的代码放在 { 和 } 之间。并把你的输入和输出。

标签: c# php asp.net encryption sha1


【解决方案1】:

PHP 有一个内置的 sha1() 函数,它执行所有这些步骤并提供十六进制输出。它应该是兼容的,尽管您必须确保字符串编码和填充在两种语言中的处理方式完全相同,否则您将获得不同的哈希输出。

$str = 'apple';

if (sha1($str) === 'd0be2dc421be4fcd0172e5afceea3970e2f3d940') {
    echo "Would you like a green or red apple?";
}

【讨论】:

  • 感谢 Jeff 快速回答,但由于我是新手,我不知道我的问题中上面提到的 C# 代码中使用了什么字符串编码。 public string SHA1(string source) { byte[] hash = new SHA1CryptoServiceProvider().ComputeHash(new UTF8Encoding().GetBytes(source));字符串 str = string.Empty; foreach(哈希中的字节数) str = str + string.Format("{0,0:x2}", (object) num);返回字符串; }
  • 看起来 C# 是 UTF8 编码数据,UTF8Encoding().GetBytes(source) 在调用 ComputeHash() 函数之前,所以你必须确保 PHP 字符串也是 utf8 编码的。如果不是,您可以使用 PHP 函数 utf8_encode(string) 将其转换为 UTF8。
  • @Jeff-InventorChromeOS 帮帮我stackoverflow.com/questions/61865164/…
猜你喜欢
  • 1970-01-01
  • 2014-12-04
  • 2019-09-18
  • 2013-07-08
  • 2016-06-02
  • 2011-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多