博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL将原始数据进行MD5加密转存
阅读量:6803 次
发布时间:2019-06-26

本文共 1005 字,大约阅读时间需要 3 分钟。

先来描述下情况吧,首先有一批用户之前批量录入后默认的密码为6个8然后进行MD5加密后进行存储的,现在需要对其更改根据用户身份证号后6位作为密码。

1.首先发现我们sqlserver05以上的版本是自带了MD5加密方法的,然后我们对其验证其加密后的数据跟用.net自带的MD5加密方法加密后是否相同。

SQLserver中取MD5方法:select HASHBYTES('MD5','888888')

结果为发现是16进制的与我们所需要的是不太一样的。

进行内置转换并截取形成我们所需要的MD5加密后的数据结果为

 

然后我们到.net中进行测试加密数据查看加密后的是否符合

发现与我们在SQL中进行加密的值相同,说明两者的加密方法一致的。

2.下来我们就到数据库里去操作啦!

 

执行update操作后到系统里检查后发现不对上不去。

又回到数据库中进行检查。(检索下看是否一致,这边由于用户名便是身份证号(USERID)所以取表的userid再进行截取后6位再进行加密处理)

select top 10 substring(sys.fn_sqlvarbasetostr(HASHBYTES('MD5',substring(UserID,LEN(UserID)-5,6))),3,32),substring(UserID,LEN(UserID)-5,6),UserID from db_owner.SystemUser where db_owner.SystemUser.RoleGuid=25

 

 

发现从数据库里截取后再进行加密与我们手动输入的值加密后的结果不同。

后来发现我们存储USERID时候用的是nvarchar类型,此时实则个字节占的位数是实际的两倍。由于这个原因导致加密后的值不同。

后将其转为varchar后进行测试

select top 10 substring(sys.fn_sqlvarbasetostr(HASHBYTES('MD5',cast(substring(UserID,LEN(UserID)-5,6) as varchar(100)))),3,32),substring(UserID,LEN(UserID)-5,6),UserID from db_owner.SystemUser where db_owner.SystemUser.RoleGuid=25

 

发现与我们期望的结果相同了。

转载地址:http://ljjwl.baihongyu.com/

你可能感兴趣的文章
在Silverlight中动态绑定页面报表(PageReport)的数据源
查看>>
决心书
查看>>
我的友情链接
查看>>
asci和ascii中文编码问题
查看>>
linux笔记 2-11 系统恢复
查看>>
windows下kafka+ELK的日志系统
查看>>
未来时代
查看>>
正则表达式总结
查看>>
ImageView的属性android:scaleType,即ImageView.setSca...
查看>>
java 计算指数函数log2(X)的值
查看>>
Greenplum -- 最全分区表操作
查看>>
Linux交互命令工具expect与自动切换登录用户
查看>>
热烈祝贺广州固润光电参加2017深圳光博会取得圆满成功
查看>>
h5实体
查看>>
模板字符串
查看>>
使用WebDriver遇到的一些问题汇总
查看>>
AI:你们是不是在等一顶红帽子?
查看>>
六周第一次课 9.1 正则介绍_grep上 9.2 grep中 9.3 grep下
查看>>
我的友情链接
查看>>
域用户像服务器上传文件
查看>>