用于 Synapse Analytics 的校验和 Md5 十六进制

问题描述 投票:0回答:1

我有一个客户正在发送一个带有 md5 十六进制数据文件的控制文件。他们想要一个带有我们自己计算的 md5 的 ack 文件。我们正在运行无服务器和突触 SQL 池。我们得到的md5是base64。是否有一些函数我可以转身并获取 md5 十六进制,以便它符合他们的期望?

azure base64 md5 apache-synapse
1个回答
0
投票

我想你可以尝试使用 HASHBYTES 函数来计算 MD5 哈希值。但是,Synapse SQL 池中的 HASHBYTES 函数以二进制格式返回值,而不是直接以十六进制格式返回值。为了满足客户对十六进制格式 MD5 的期望,您可以结合使用 CONVERT 和 SUBSTRING 函数。我希望你明白我所说的,

让我向您展示如何从字符串计算十六进制格式的 MD5 哈希值

DECLARE @InputString NVARCHAR(MAX) = 'YourDataString';

-- Calculate MD5 hash in binary format
DECLARE @BinaryHash VARBINARY(16);
SET @BinaryHash = HASHBYTES('MD5', @InputString);

-- Convert binary hash to hexadecimal format
DECLARE @HexHash NVARCHAR(32);
SET @HexHash = CONVERT(NVARCHAR(32), @BinaryHash, 2);

-- Display the result
SELECT @HexHash AS MD5Hex;

但我不建议使用 MD5,因为它存在漏洞,因此在加密目的方面很弱。如果担心安全性,请考虑使用更安全的哈希函数,例如 SHA-256 或 SHA-3。

© www.soinside.com 2019 - 2024. All rights reserved.