c# - 在java和c#中使用hmac/sha512生成哈希值

标签 c# java hash hmac sha512

在 C# 中

public static string HashToString(string message, byte[] key)

{

  byte[] b=new HMACSHA512(key).ComputeHash(Encoding.UTF8.GetBytes(message));

  return Convert.ToBase64String(b);

}

client.DefaultRequestHeaders.Add("X-Hash", hash);

var cryptoContent = DataMotion.Security.Encrypt(key, Convert.FromBase64String(iv), serializedModel);

var request = client.PostAsync(ApiUrlTextBox.Text,encryptedContent,new JsonMediaTypeFormatter());

在java中:

protected String hashToString(String serializedModel, byte[] key) {

String result = null;

Mac sha512_HMAC;

try {

  sha512_HMAC = Mac.getInstance("HmacSHA512");      

  SecretKeySpec secretkey = new SecretKeySpec(key, "HmacSHA512");

  sha512_HMAC.init(secretkey);

   byte[] mac_data = sha512_HMAC.doFinal(serializedModel.getBytes("UTF-8"));        

   result = Base64.encodeBase64String(mac_data);

}catch(Exception e){
}
}

o/p: ye+AZPqaKrU14pui4U5gBCiAbegNvLVjzVdGK3rwG9QVzqKfIgyWBDTncORkNND3DA8jPba5xmC7B5OUwZEKlQ==

我已经在基于c#代码的java中编写了hashtostring方法。这是正确的吗? (输出不同,因为在这两种情况下每次进程都是动态的。)

最佳答案

使用不同的 C# 编码

public static string SHA512_ComputeHash(string text, string secretKey)
{
    var hash = new StringBuilder(); ;
    byte[] secretkeyBytes = Encoding.UTF8.GetBytes(secretKey);
    byte[] inputBytes = Encoding.UTF8.GetBytes(text);
    using (var hmac = new HMACSHA512(secretkeyBytes))
    {
        byte[] hashValue = hmac.ComputeHash(inputBytes);
        foreach (var theByte in hashValue)
        {
            hash.Append(theByte.ToString("x2"));
        }
    }

    return hash.ToString();
}

关于c# - 在java和c#中使用hmac/sha512生成哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23655462/

相关文章:

c# - 如何使用 Microsoft Fakes Shim 隔离(绕行)类的构造函数?

c# - 如何使用 EF4 Code-First 一次创建两个关联实体

c# - 在WPF应用程序中以编程方式打开 'Set Associations'?

c# - 如何在 Windows 窗体应用程序中使用 Monaco 编辑器?

java - 如何在 Java 哈希表中将值添加到值数组中

algorithm - 什么是桶排序的好散列函数?

java - getAudioInputStream 格式无效,尝试在 Java 中播放声音

java - ClassCastException 在 Arrays.sort(...) 中使用转换后的列表

java - Maven 更新链接

java - 在 Java 中使用哈希值对数组进行排序