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