【发布时间】:2021-08-04 22:40:05
【问题描述】:
我正在为支付集成创建一个 sha-256 哈希 要求是(来自银行的指示):
第 1 步:创建字符串 例如 987654321012013:07:16-09:57:081.00826TopSecret
第 2 步:将创建的字符串转换为其 ascii 十六进制表示 例如 3938373635343332313031323031333a30373a31362d30393a35373a3038312e3030383236546f70536563726574
第 3 步:生成转换后字符串的 sha-256 哈希 例如 3d7e75aa0b4e0e1d4a7ac87e451e64692cced46f4358ef35a69d96721341243c
问题: 我的代码中的第 2 步给出了大写的 A、D、E、F 等,然后生成与给定示例不同的 sha-256。我需要生成具有小写十六进制表示的字节数组。
这是我的代码(在 .NET 4.5.2 中):
string hash = createHash( inputstring );
public static string createHash(string inputString)
{
SHA256 sha256 = SHA256Managed.Create();
byte[] bytes = Encoding.ASCII.GetBytes(inputString);
// need my bytes to be lower case
byte[] hash = sha256.ComputeHash(bytes);
return GetStringFromHash(hash).ToLower();
}
感谢您的帮助。
【问题讨论】:
-
.ToLower()的输入数据有什么问题? -
什么?你在什么时候将
bytes转换为字符串`?byte没有大写或小写;它是计算机内存中的一个数字。 -
另外,您没有将字符串转换为十六进制表示形式(这将再次成为字符串)。
-
@Llama 因为输入字符串区分大小写,问题是中间步骤需要小写 Caius - 谢谢,我意识到,我的问题在于该数字的表示跨度>
标签: c# character-encoding byte sha256