javascript - MD5哈希值不同

标签 javascript angularjs sql-server md5

在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;
        }

angular-md5 module

问:你能告诉我为什么会出现这种差异吗? 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

参见SQL Server converting varbinary to string

关于javascript - MD5哈希值不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39023368/

相关文章:

javascript - 在 MEAN Web 应用程序中,从 Express(服务器端)发送 HTTP 响应错误 403、500,未在 Angular Controller 的 errorCallback 函数中捕获

java - 如何用Java连接MS SQL数据库?

javascript - 只需要获取 ID 的一部分(最后一个下划线之前的所有内容)

javascript - JavaScript 中可以从基类获取派生类吗?

angularjs - Angular orderBy 文档是否错误?还是我很困惑?

javascript - AngularJS 指令对属性更改没有反应

javascript - 即使confirm()方法为false,Jquery AJAX也会提交表单

javascript - 在下划线源中使用 apply

sql - System.Data.Entity.Core.EntityCommandExecutionException 发生无效的浮点运算

sql - 存储过程重构