将PHP HMAC SHA256转换为C#

3

我需要将以下PHP代码转换为C#代码:

$hash = hash_hmac('SHA256',"ent",'key',true);
echo rtrim(strtr(base64_encode($hash), '+/', '-_'), '=');

我使用以下C#代码:(FROM HERE)
private static string hmacSHA256(String data, String key)
{
    using (HMACSHA256 hmac = new HMACSHA256(Encoding.ASCII.GetBytes(key))) {
        byte[] a2 = hmac.ComputeHash(Encoding.ASCII.GetBytes(data));
        string a3 = Convert.ToBase64String(a2).ToString.Replace("+", "-").Replace("/", "_").Replace("=", "");
        return a3;
    }
}

但结果并不相同。

PHP的结果:Xt0hGF_wcArzx4urxfbHUpOp2eEXvtGTDekGtQw5JTo

C#的结果:FnM4gpRRlapTZcO5iAIlEXEqU5iFT1hYcmQ1rY7ZINE


你能展示一下你是如何调用这些方法的吗?也就是说,你传递给它们什么数据? - Visual Vincent
为什么这个问题会有那么多关闭投票?在我看来,这是一个有效的问题,而且比你在这里找到的大多数新用户问题要好得多。他向我们展示了原始代码和他尝试转换后的代码,并向我们展示了预期和实际输出。除了他如何调用这些方法之外,可能还缺少什么呢? - Visual Vincent
1个回答

2

我刚刚测试了您的两个代码,它们都能正常工作。我将abcdefghsecretkey作为参数传递,它们给出了相同的结果。

如果您在提问之前检查了实际输入,那就更好了。

C# 代码 (fiddle):

Console.WriteLine(hmacSHA256("abcdefgh", "secretkey"));

输出:

d2AI63oXm2Q5VDCCjLvBrwKr-gT6vZcizD6BCq1rRjc


PHP 代码(请自行制作篮球比赛):

<?php
    $hash = hash_hmac('SHA256',"abcdefgh",'secretkey',true);
    echo rtrim(strtr(base64_encode($hash), '+/', '-_'), '=');
?>

输出:

d2AI63oXm2Q5VDCCjLvBrwKr-gT6vZcizD6BCq1rRjc


您的问题存在于其他地方。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接