当前位置: 首页 > 知识库问答 >
问题:

如何对SHA-256哈希进行十六进制编码

公良阳波
2023-03-14
private static string ToHex(byte[] bytes, bool upperCase)
{
    StringBuilder result = new StringBuilder(bytes.Length * 2);

    for (int i = 0; i < bytes.Length; i++)
        result.Append(bytes[i].ToString(upperCase ? "X2" : "x2"));

    return result.ToString();
}

private string hashRequestBody(string reqBody)
{
    string hashString;
    using (var sha256 = SHA256Managed.Create())
    {
        var hash = sha256.ComputeHash(Encoding.Default.GetBytes(reqBody));
        hashString = ToHex(hash, false);
    }

    MessageBox.Show(hashString);
    return hashString;
}

{“CorporateID”:“BCAAPI2016”,“SourceAccountNumber”:“0201245680”,“TransactionID”:“00000001”,“TransactionDate”:“2017-09-13”,“ReferenceID”:“Refid”,“CurrencyCode”:“IDR”,“金额”:“10000”,“ConveriaryAccountNumber”:“0201245681”,“rement1”:“Transfer Test”,“rement2”:“Online Transfer”}

银行沙盒结果:E9D06986C1ED6B063BF59AA873030013725C518631DEEF2B2147E614017C2141

矿:1C83ACC42CF905CA8AFBA27EF0640C70AD2856A366B57C17CF16F2894327676E

共有1个答案

谷梁嘉悦
2023-03-14

我见过几种解决这个问题的方法,但您的代码是最优雅的。我稍微重新考虑了一下,并为这个答案测试了一下。我还得到了散列:

1C83ACC42CF905CA8AFBA27EF0640C70AD2856A366B57C17CF16F2894327676E

请参见以下内容:https://dotnetfiddle.net/qbsktc

using System;
using System.Security.Cryptography;
using System.Text;

public class Program
{
    public static void Main()
    {
        Console.WriteLine(SHA256HexHashString("{\"CorporateID\":\"BCAAPI2016\",\"SourceAccountNumber\":\"0201245680\",\"TransactionID\":\"00000001\",\"TransactionDate\":\"2017-09-13\",\"ReferenceID\":\"refID\",\"CurrencyCode\":\"IDR\",\"Amount\":\"10000\",\"BeneficiaryAccountNumber\":\"0201245681\",\"Remark1\":\"Transfer Test\",\"Remark2\":\"Online Transfer\"}"));
    }

    private static string ToHex(byte[] bytes, bool upperCase)
    {
        StringBuilder result = new StringBuilder(bytes.Length * 2);
        for (int i = 0; i < bytes.Length; i++)
            result.Append(bytes[i].ToString(upperCase ? "X2" : "x2"));
        return result.ToString();
    }

    private static string SHA256HexHashString(string StringIn)
    {
        string hashString;
        using (var sha256 = SHA256Managed.Create())
        {
            var hash = sha256.ComputeHash(Encoding.Default.GetBytes(StringIn));
            hashString = ToHex(hash, false);
        }

        return hashString;
    }
}
 类似资料:
  • 我正在尝试使用亚马逊的弹性代码转换器。这里我需要sha-256散列一个字符串;http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html 我已经尝试了我在网上找到的任何方法,但我找不到与页面和一些在线哈希网站提供的相同的结果。 下面是要散列的字符串,您可以从上面的链接中找到; 以下是预期结果: 3

  • 问题内容: 我试图在Go中获取文件的md5哈希,如下所示: 但是当我尝试通过以下方式获取哈希的’sum’(http://golang.org/pkg/hash/)的字符串时 当哈希应该是。当我尝试逐字节转换时,我得到的都是废话,只是字符不同。 我该如何获取哈希的字符串? 问题答案: 基本上,您已经获得了二进制数据,但是看起来您正在期待十六进制。看一下转换例程的hex包,尤其是。我不是一个程序员去,

  • 因此,我试图找出如何在ios上进行hmacshad256哈希,因为这是我为wcf服务api所做的哈希。我一直试图寻找一些关于它的信息,但通常只是最终得到一个SHA-256哈希。

  • 我想找到一个解决方案或方法,使我能够添加盐和控制迭代次数。本机Rfc2898DeriveBytes基于HMACSHA1。理想情况下,使用SHA-256或SHA-512将使系统经得起未来的考验。 这是迄今为止我发现的最好的例子:http://jmedved.com/2012/04/pbkdf2-with-sha-256-and-others/但是当我用SHA-256运行它时,它实际上比用SHA-51

  • 本文向大家介绍如何将十六进制转换为十进制?,包括了如何将十六进制转换为十进制?的使用技巧和注意事项,需要的朋友参考一下 而十六进制数是具有值是16的数字系统中的一个并且它具有唯一的16个码元:0,1,2,3,4,5,6,7,8,9和A,B,C,d,E ,其中A,B,C,D,E和F分别是十进制值10、11、12、13、14和15的单位表示。而十进制系统是最熟悉的号码系统向公众开放。它是10的基数,只

  • 本文向大家介绍如何将十进制转换为十六进制?,包括了如何将十进制转换为十六进制?的使用技巧和注意事项,需要的朋友参考一下 十进制是公众最熟悉的数字系统。它是基数10,只有10个符号-0、1、2、3、4、5、6、7、8和9。而十六进制是计算机或数字系统中最常见的数字系统颜色表示。它是基数16,只有16个符号:0、1、2、3、4、5、6、7、8、9和A,B,C,D,E,F。这些A,B,C,D ,E,F分