gpt4 book ai didi

c# - Perl 中的 SHA1 C# 方法是否等效?

转载 作者:太空宇宙 更新时间:2023-11-03 17:37:06 25 4
gpt4 key购买 nike

我获得了 C# 代码,我正在尝试使用 Perl 生成等效的 SHA1。

public string GetHashedPassword(string passkey)
{
// Add a timestamp to the passkey and encrypt it using SHA1.
string passkey = passkey + DateTime.UtcNow.ToString("yyyyMMddHH0000");
using (SHA1 sha1 = new SHA1CryptoServiceProvider())
{
byte[] hashedPasskey =
sha1.ComputeHash(Encoding.UTF8.GetBytes(passkey));
return ConvertToHex(hashedPasskey);
}
}
private string ConvertToHex(byte[] bytes)
{
StringBuilder hex = new StringBuilder();
foreach (byte b in bytes)
{
if (b < 16)
{
hex.AppendFormat("0{0:X}", b);
}
else
{
hex.AppendFormat("{0:X}", b);
}
}
return hex.ToString();
}

等同于:

use Digest::SHA1 qw( sha1_hex );
my $pass = "blahblah";
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime();
$year += 1900;
my $date = sprintf("%d%02d%02d%02d0000", $year, $mon+1, $mday, $hour);
my $passSha1 = sha1_hex($pass.$date);
//9c55409372610f8fb3695d1c7c2e6945164a2578

我实际上没有任何 C# 经验,所以我无法测试 C# 代码通常输出的内容。

该代码应该用作网站的校验和,但我提供的代码失败了。

编辑:它还在散列之前将 UTC 时间戳 (yyyyMMDDHH0000) 添加到传递的末尾,因此我添加了该代码以防出现问题。

最佳答案

我也不懂 C#。但是,{0:X} 使用大写字母格式化十六进制数字。那么,

my $passSha1 = uc sha1_hex($pass);

帮助? (假设 GetHashedPassword 有意义。)

关于c# - Perl 中的 SHA1 C# 方法是否等效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1231171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com