C# 来自C的hmacSHA384#
我有一个code.PHP代码,它生成sha384哈希字符串。类似于下面的代码C# 来自C的hmacSHA384#,c#,.net,hmacsha1,C#,.net,Hmacsha1,我有一个code.PHP代码,它生成sha384哈希字符串。类似于下面的代码 $hash=hash_hmac(“sha384”, $aid . $amount . $version . $currency . $mid . $mode. $request . $responsetype, $key); 我想从c#生成这个哈希代码hma
$hash=hash_hmac(“sha384”, $aid .
$amount .
$version .
$currency .
$mid .
$mode.
$request .
$responsetype,
$key);
我想从c#生成这个哈希代码hmacSHA384。
我试过几种方法。但这并没有像我预期的那样奏效
string val = string.Concat( int aid, int amount, string version, string currency,int mid, string mode, string request, string responsetype);
private static byte[] hmacSHA384(string val,string key)
{
using (HMACSHA384 hmac = new HMACSHA384(Encoding.ASCII.GetBytes(key))
{
return hmac.ComputeHash(Encoding.ASCII.GetBytes(val));
}
}
我应该如何转换它?在C#中,您必须先将每个项目转换为字符串,然后才能连接它们。您有几个选择:
.ToString()
,然后连接字符串,例如
string val = aid.ToString() + amount.ToString() + ...
string val = String.Format("{0}{1}{2}[3}{4}{5}{6}{7}", aid, amount, ... );
它将把每个值呈现为一个字符串string val = $"{aid}{amount}{version}{currency}{mid}{mode}{request}{responsetype}";
我按照普通的c#hmacSHA384生成代码。如果你看我的代码。在c#中,我使用了唯一的关键参数。我没有在这里使用任何其他参数。那么我应该如何添加剩余的参数呢?作为字节数组或??PHP在散列结果之前将所有参数连接在一起(可能是字符串?)。我建议您尝试找到一个确切的哈希示例,这样您就可以用C#编写一个测试用例。是的,这种连接是正确的。我据此修改了我的答案。