在sql服务器上:输出: 0x5C8C8AAFE7AE37EA4EBDF8BFA01F82B8
SELECT HASHBYTES('MD5', convert(varchar,getdate(),112)+'mytest@+')
在 JavaScript 上:输出: 5c8c8aafe7ae37ea4ebdf8bfa01f82b8
//to get Md5 Hash bytes
vm.getMd5Hashbytes = function () {
var currentDate = moment().format('YYYYMMDD');
var md5Hash = md5.createHash(currentDate + 'mytest@+');
return md5Hash;
}
问:你能告诉我为什么会出现这种差异吗? SQL 服务器显示 0x
作为前缀。为什么?
最佳答案
这纯粹是一个格式问题。两个版本都生成相同的字节序列。 SQL Server 和 Node 只是以人类可读的格式呈现这些字节时有不同的约定。
您可以通过专门告诉 SQL Server 如何格式化二进制数据来获得类似的格式
declare @hashAsBinary varbinary(max)
declare @hashAsText char(32)
set @hashAsBinary = HASHBYTES('MD5', '20160818mytest@+')
set @hashAsText = LOWER(CONVERT(varchar(max), @hashAsBinary, 2))
select @hashAsText
哪些输出:
5c8c8aafe7ae37ea4ebdf8bfa01f82b8
关于javascript - MD5哈希值不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39023368/