使用 SQL 从整数创建哈希
Create Hash from Integer using SQL
我正在尝试使用 SQL 从整数创建哈希。这样做的目的是创建一个函数,我将在其中知道接收到的数据是否未被脚本人员 运行 篡改。我想我会对整数进行 MD5 哈希处理,但是我 运行 遇到了一些 MD5 哈希不准确的问题。
这是我的测试代码,我尝试将 20
转换为 MD5
SELECT CONVERT(NVARCHAR(32),HashBytes('MD5', STR(20)),2) as 'MD5'
returns F63258CAB6D44ED830605298043CBEA4
和
SELECT CONVERT(NVARCHAR(32),HashBytes('MD5', '20'),2) as 'MD5'
returns 98F13708210194C475687BE6106A3B84
的预期结果
我的转换有什么问题?
另外我也不必使用MD5。我愿意接受使用不同方法的建议,在这种方法中,我可以轻松解密,但普通用户即使看到代码也很难进行逆向工程。
当您检查 STR(20)
的结果时,您会注意到一些前导空格。
试试 LTRIM(20)
或 cast(20 as varchar(12))
。
我正在尝试使用 SQL 从整数创建哈希。这样做的目的是创建一个函数,我将在其中知道接收到的数据是否未被脚本人员 运行 篡改。我想我会对整数进行 MD5 哈希处理,但是我 运行 遇到了一些 MD5 哈希不准确的问题。
这是我的测试代码,我尝试将 20
转换为 MD5
SELECT CONVERT(NVARCHAR(32),HashBytes('MD5', STR(20)),2) as 'MD5'
returns F63258CAB6D44ED830605298043CBEA4
和
SELECT CONVERT(NVARCHAR(32),HashBytes('MD5', '20'),2) as 'MD5'
returns 98F13708210194C475687BE6106A3B84
我的转换有什么问题?
另外我也不必使用MD5。我愿意接受使用不同方法的建议,在这种方法中,我可以轻松解密,但普通用户即使看到代码也很难进行逆向工程。
当您检查 STR(20)
的结果时,您会注意到一些前导空格。
试试 LTRIM(20)
或 cast(20 as varchar(12))
。