在 SQL Server 中生成中文的 UTF-8 MD5 哈希值

问题描述 投票:0回答:1
SELECT LOWER(CONVERT(VARCHAR(32), HASHBYTES('MD5', 'a'), 2));

结果:

0cc175b9c0f1b6a831c399e269772661

这样就可以了。

SELECT LOWER(CONVERT(VARCHAR(32), HASHBYTES('MD5', '啊'), 2));

结果:

795d6a1c51f0ac4b0856f5cac1846f3f

正确的结果是

04c16ff7b157d4b4702bb24aa62651a5

为什么我得到错误的结果?

请解答我的问题,谢谢!

sql-server hash utf-8 md5
1个回答
0
投票

要获得所需的结果,您需要获取字符串的 UTF8 编码 的 MD5 哈希值。这可以通过对字符串应用 UTF8 排序规则并转换为

VARCHAR
来完成。还需要在字符串文字中添加
N
前缀。

SELECT LOWER(CONVERT(VARCHAR(32), HASHBYTES('MD5',
  CONVERT(VARCHAR(MAX), N'啊' COLLATE Latin1_General_100_CI_AI_SC_UTF8)
  ), 2));

结果:

04c16ff7b157d4b4702bb24aa62651a5
与这个MD5在线编码网站

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