SQL Server 使用MD5加密的坑

不废话直接上代码

DECLARE @String VARCHAR(64)
Set @String = '1234'
select substring(sys.fn_sqlvarbasetostr(HashBytes('MD5',@String)),3,32) as T

select substring(sys.fn_sqlvarbasetostr(HashBytes( 'MD5', dbo.User.Pin)), 3, 32 ) AS PWD,dbo.User.Pin FROM dbo.CRDHLD

结果集:

结果1
结果2

从两个结果集可以看到,变量@String和字段Pin的值,有多个相等,但出来的MD5值却不相同。

据我推测,出问题的原因是一个是用MD5算法直接作用在SQL 的变量上,另一个是作用的select出来的字段值上,但SQL的变量数据可能和select出来的字段值在内存表现上可能是不同的,因些才会导致最终的MD5值不同。

解决的方法是,统一数据加密码的来源,我现在用的方法是,从表中读取时就加密码,然后再传到SQL变量中,现在的结果是相同的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值