我正在尝试使用SQL从整数创建哈希。这样做的目的是创建一个函数,在该函数中,我将知道所接收的数据是否未被运行脚本的人员篡改。我想我会MD5-hash整数然而我遇到一些问题,MD5哈希不准确。
这是我的测试代码,我尝试将20
转换为MD5
SELECT CONVERT(NVARCHAR(32),HashBytes('MD5', STR(20)),2) as 'MD5'
返回F63258CAB6D44ED830605298043CBEA4
和
SELECT CONVERT(NVARCHAR(32),HashBytes('MD5', '20'),2) as 'MD5'
返回98F13708210194C475687BE6106A3B84
我的转换错误是什么?
此外,我不必使用MD5。我愿意接受使用不同方法的建议,即使他们看到代码,我很容易解密,但普通用户很难进行逆向工程。
答案 0 :(得分:3)
当您检查STR(20)
的结果时,您会注意到一些前导空格。
请尝试LTRIM(20)
或cast(20 as varchar(12))
。