总结Sql Server内置函数实现MD5加密
--MD5加密
--HashBytes ('加密方式', '待加密的值')
--加密方式= MD2 | MD4 | MD5 | SHA | SHA1
--返回值类型:varbinary(maximum 8000 bytes)
select HashBytes('MD5','')
--HashBytes生成的结果为:0xE10ADC3949BA59ABBE56E057F20F883E --一般工具生成的都是没有0x和是小写的,16进制的数值,去掉“0x”转换为小写值就完全与MD5值吻合了,
--在此需要用另一个函数(sys.fn_sqlvarbasetostr)把varbinary的值转换为varchar类型的,
select sys.fn_sqlvarbasetostr(HashBytes('MD5',''))
--结果:0xe10adc3949ba59abbe56e057f20f883e 截取去掉0x select substring(sys.fn_sqlvarbasetostr(HashBytes('MD5','')),3,32)
--结果就是完整的MD5值:e10adc3949ba59abbe56e057f20f883e

在SQL Server 2005下自带的函数HashBytes() ,此函数是微软在SQL Server 2005中提供的,HashBytes() 函数的返回结果是VarBinary类型(以 0x 开头 16 进制形式的二进制数据)。通常情况下,我们需要的都是字符串型的数据,直接存入varchar字段类型的列或者nvarchar的列,就会出现乱码,需要类型转化
--通用可以用convert替换sys.fn_sqlvarbasetostr
select CONVERT(VARCHAR(50),HashBytes('MD5',''),1)
--0xE10ADC3949BA59ABBE56E057F20F883E
--如果值不需要0x开头,可以设置 CONVERT() 的style参数为2
select CONVERT(VARCHAR(50),HashBytes('MD5',''),2) --Convert()函数是Sql Server2008及以上版本支持,2008以下版本可以使用下面的方法:
--sys.fn_VarBinToHexStr() 或 sys.fn_sqlvarbasetostr() 函数转换也可以避免乱码,但是转换后的值带有0x开头,并且值为小写形式
select sys.fn_VarBinToHexStr(HashBytes('MD5',''))
--ps. SHA1算法结果为40位,MD5为32位或16位,根据实际长度截取。
--也可使用 fn_varbintohexsubstring() :
SELECT master.dbo.fn_varbintohexsubstring(0,HashBytes('MD5',''),1,0)
--e10adc3949ba59abbe56e057f20f883e
--fn_SqlVarBaseToStr() 第1个参数表示是否保留0x前缀,1为保留,0为不保留。fn_VarBinToHexStr()内部调用的就是fn_SqlVarBaseToStr(),且第1个参数传的1。
--变量类型不同,得到的加密结果也不同
declare @a1 nvarchar(20)
set @a1=''
select HashBytes('MD5',@a1)
--0xCE0BFD15059B68D67688884D7A3D3E8C declare @a2 nvarchar(10)
set @a2=''
select HashBytes('MD5',@a2)
--0xCE0BFD15059B68D67688884D7A3D3E8C declare @a3 varchar(20)
set @a3=''
select HashBytes('MD5',@a3)
--0xE10ADC3949BA59ABBE56E057F20F883E
总结Sql Server内置函数实现MD5加密的更多相关文章
- Sql Server内置函数实现MD5加密
实例 MD5加密“123456”: HashBytes('MD5','123456') 结果:0xE10ADC3949BA59ABBE56E057F20F883E (提示:看完最后,结果要进行转换.) ...
- SQL Server 内置函数实现MD5加密
一.MD5加密 HASHBYTES ('加密方式', '待加密的值') 加密方式= MD2 | MD4 | MD5 | SHA | SHA1 返回值类型:varbinary(maxim ...
- SQL Server 内置函数、临时对象、流程控制
SQL Server 内置函数 日期时间函数 --返回当前系统日期时间 select getdate() as [datetime],sysdatetime() as [datetime2] getd ...
- 10、SQL Server 内置函数、临时对象、流程控制
SQL Server 内置函数 日期时间函数 --返回当前系统日期时间 select getdate() as [datetime],sysdatetime() as [datetime2] getd ...
- sql server内置函数
MSDN标准文档:https://msdn.microsoft.com/zh-cn/library/ff848784(v=sql.120).aspx 配置函数 select @@servername ...
- mysql 内置函数和sql server 内置函数的区别
以下函数均没有对参数做说明,使用的使用需要了解其参数内容 数据库 sql server mysql oracle 举例 获得当前系统时间 getdate() now() sysdate 注意不是函数 ...
- sql server 内置ETL工具学习(一) BCP篇
sql server 内置ETL工具学习 常用的导入方式:bcp, BULK INSERT,OPENROWSET和 SSIS. BCP BCP全称BULK COPY PROGRAM 有以下特点: 命令 ...
- [SQL]SUTFF内置函数的用法 (删除指定长度的字符并在指定的起始点插入另一组字符)
STUFF 删除指定长度的字符并在指定的起始点插入另一组字符. 语法 STUFF ( character_expression , start , length , character_express ...
- sql server内置存储过程、查看系统信息
1.检索关键字:sql server内置存储过程,sql server查看系统信息 2.查看磁盘空间:EXEC master.dbo.xp_fixeddrives , --查看各个数据库所在磁盘情况S ...
随机推荐
- Windows10下安装Maven以及Eclipse安装Maven插件 + 创建Maven项目
在官网下载Maven http://maven.apache.org/download.cgi 下载下来后加压缩,将apache-maven-3.5.4文件夹复制到想要存放它的位置,我放在了 ...
- SQL 游标 Cursor 基本用法
/* table1结构如下 id int name varchar(50) */ declare @id int ) declare cursor1 cursor for --定义游标cursor1 ...
- 洛谷.3834.[模板]可持久化线段树(主席树 静态区间第k小)
题目链接 //离散化后范围1~cnt不要错 #include<cstdio> #include<cctype> #include<algorithm> //#def ...
- .w调用action
有两种方法发送Action请求,分别是sendBizRequest和sendBizRequest2,前者返回xml格式的参数,后者提供了返回json或者xml格式的参数的能力. 1.sendBizRe ...
- linux find命令用法
Linux下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提供了相当多的查找条件,功能很强大.由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时 ...
- DesignMode的重载 C#
也就是说一个控件只有在它自己被拖拽到设计器的时候,其 DesignMode 才是真,如果它被包含在其他控件中被加入到设计器,那么那个控件才是在设计模式,而它不是!换句话说,DesignMode 并不能 ...
- 连接mysql 出现:java.sql.SQLException: Unable to load authentication plugin 'caching_sha2_password'.
数据测试的时候出现: 网上查资料说的是mysql5.x 版本和 8.x版本的区别: 5.7版本是:default_authentication_plugin=mysql_native_password ...
- Tomcat热部署SpringMVC项目出错
一.问题 项目照常跑,没有什么大的影响,但是在控制台却出现了错误,具体信息如下图所示 二.解决方法 原因分析:很多人已经说的很明白了,这大概是因为项目文件很多,在tomcat重启的时候,之前的tomc ...
- org.springframework.web.util.WebUtils.isSameOrigin(WebUtils.java:816)
Nginx反向代理WebSocket时报这个错,普通的http请求没问题,ws请求报错 可能原因: 1.你用了4.2.5.RELEASE版本或者4.2.6.RELEASE,升级到4.2.7.RELEA ...
- Android ViewFlipper增添ScrollView后不能滑动了
Android ViewFlipper添加ScrollView后不能滑动了在Activity中添加ScrollView实现滚动activity的效果后,activity的滑动效果却无法生效了,原因是因 ...