我生成了一个md5哈希,如下所示:
DECLARE @varchar varchar(400)
SET @varchar = 'è'
SELECT CONVERT(VARCHAR(2000), HASHBYTES( 'MD5', @varchar ), 2)
Run Code Online (Sandbox Code Playgroud)
哪个输出:
785D512BE4316D578E6650613B45E934
Run Code Online (Sandbox Code Playgroud)
但是使用以下方法生成MD5哈希:
System.Text.Encoding.UTF8.GetBytes("è")
Run Code Online (Sandbox Code Playgroud)
产生:
0a35e149dbbb2d10d744bf675c7744b1
Run Code Online (Sandbox Code Playgroud)
C#.NET方法中的编码设置为UTF8,我假设varchar也是UTF8,任何关于我做错的想法?
我尝试在某个值上计算md5哈希值,但是得到了一个奇怪的结果.
我以两种不同的方式运行它:
SELECT HASHBYTES('md5',ZLA_PASSWORD),ZLA_PASSWORD, len(ZLA_PASSWORD) FROM ZLA_PASSWORD;
SELECT HASHBYTES('md5', '123456');
Run Code Online (Sandbox Code Playgroud)
我得到两个不同的结果,其中只有第二个有效:
0xCE0BFD15059B68D67688884D7A3D3E8C 123456 6
0xE10ADC3949BA59ABBE56E057F20F883E
Run Code Online (Sandbox Code Playgroud)
这是在SQL Server 2005上完成的.
在123456上检查MD5的结果与在线检查第二个结果相同.
有任何想法吗?
谢谢!