【发布时间】:2020-05-14 14:53:45
【问题描述】:
当我使用非英文字符时,生成的哈希值不一样,但除此之外,一切都很好。 有没有人有解决方案来获得相同的结果?
MYSQL
SELECT MD5( 'سلام')
------------- result: 78903c575b0dda53c4a7644a2dd36d0e
SQL 服务器
SELECT CONVERT(VARCHAR(50), HASHBYTES('MD5', 'سلام'), 2)
-------------- result:3C50F6458899B3C0988BE358290F5F24
SELECT CONVERT(nVARCHAR(50), HASHBYTES('MD5', N'سلام'), 2)
-------------- result:0381CA5081FBC68B2F55F2F2C21399D7
【问题讨论】:
-
我认为您的部分问题是找出 MySQL 使用的字符编码,以便您可以在 SQL Server 上使用相同的编码。在 MySQL 上,如果你
SELECT HEX(CAST('سلام' as binary)),你会得到D8B3D984D8A7D985。现在在 SQL Server 上,如果您执行declare @blob varbinary(8) = 0xD8B3D984D8A7D985; select hashbytes('md5', @blob);,您将获得与您期望的相同的哈希值,0x78903C575B0DDA53C4A7644A2DD36D0E。 -
是的,这是一种方法,但我无法弄清楚。
标签: mysql sql-server md5 farsi hashbytes