gpt4 book ai didi

c# - AWS SQS,如何计算消息属性的 MD5 消息摘要

转载 作者:行者123 更新时间:2023-12-04 15:14:29 25 4
gpt4 key购买 nike

我目前正在尝试弄清楚如何计算 AWS 中消息属性的 MD5 消息摘要。我正在关注 uri SQS message metadata > 计算消息属性的 MD5 消息摘要

虽然这看起来很简单,但我正在尝试获取以下属性的哈希值

var messageAttributes = new Dictionary<string, MessageAttributeValue>
{
{"UserName", new MessageAttributeValue {DataType ="String", StringValue = "Me"}}
};

我已发送此消息,MD5 响应为 3a6071d47534e3e07414fea5046fc217

试图找出文档,我认为这应该可以解决问题:

private void CustomCalc()
{
var verifyMessageAttributes = new List<byte>();
verifyMessageAttributes.AddRange(EncodeString("UserName"));
verifyMessageAttributes.AddRange(EncodeString("String"));
verifyMessageAttributes.AddRange(EncodeString("Me"));
var verifyMessageAttributesMd5 = GetMd5Hash(verifyMessageAttributes.ToArray());
}

private List<byte> EncodeString(string data)
{
var result = new List<byte>();
if (BitConverter.IsLittleEndian)
{
result.AddRange(BitConverter.GetBytes(data.Length).Reverse());
}
else
{
result.AddRange(BitConverter.GetBytes(data.Length));
}
result.AddRange(Encoding.UTF8.GetBytes(data));
return result;

}
public static string GetMd5Hash(byte[] input)
{
using (var md5Hash = MD5.Create())
{
// Convert the input string to a byte array and compute the hash.
var dataBytes = md5Hash.ComputeHash(input);

// Create a new string builder to collect the bytes and create a string.
var sBuilder = new StringBuilder();

// Loop through each byte of the hashed data and format each one as a hexadecimal string.
foreach (var dataByte in dataBytes)
{
sBuilder.Append(dataByte.ToString("x2"));
}

// Return the hexadecimal string.
return sBuilder.ToString();
}
}

但我最终得到了这个cf886cdabbe5576c0ca9dc51871d10ae有谁知道我要去哪里错了。它不会那么难,我想我只是现在没有看到它。

最佳答案

你快到了,但还差一步:

Encode the transport type (String or Binary) of the value (1 byte).

Note The logical data types String and Number use the String transporttype.

The logical data type Binary uses the Binary transport type.

For the String transport type, encode 1.

For the Binary transport type, encode 2.

因此您需要在值前附加 1 或 2,以指示传输类型。在你的情况下:

var verifyMessageAttributes = new List<byte>();
verifyMessageAttributes.AddRange(EncodeString("UserName"));
verifyMessageAttributes.AddRange(EncodeString("String"));
verifyMessageAttributes.Add(1); // < here
verifyMessageAttributes.AddRange(EncodeString("Me"));
var verifyMessageAttributesMd5 = GetMd5Hash(verifyMessageAttributes.ToArray());

关于c# - AWS SQS,如何计算消息属性的 MD5 消息摘要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64575254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com