md5加密代码怎么写 数据库md5加密代码

在编写SQL脚本时,我们可能会遇到需要用MD5加密字符串的情况,比如存储在数据库中的用户密码需要用MD5加密。大多数数据库直接提供md5加密功能。比如MySQL和PostgreSQL中的,直接提供了名为MD5的加密函数,确实很方便。但在MSSQL中并不简单!MSSQL版本中MD5加密的处理使用SQLS...

在编写SQL脚本时,我们可能会遇到需要用MD5加密字符串的情况,比如存储在数据库中的用户密码需要用MD5加密。大多数数据库直接提供md5加密功能。比如MySQL和PostgreSQL中的,直接提供了名为MD5的加密函数,确实很方便。但在MSSQL中并不简单!

MSSQL版本中MD5加密的处理

使用SQLServer的朋友会发现,在MSSQL中并没有像md5这样名字的函数,所以如何用md5加密字符串真的不太容易。尤其是早期版本,比如MSSQL2000,只能自己想办法加密MD5。还能做什么,就是自己写自定义函数来处理?

如果MD5处理是在MSSQL2000中完成的,那么只能编写自己的自定义函数处理。网上也有一些专家写的剧本。我还在这里为MD5处理编译了一个脚本。有需要的朋友可以打电话到@网云科技找我,我可以私信发给你。

但这毕竟不是问题,不伦不类还挺烦人的。好在从2008年开始,MSSQL就提供了hashbytes函数,可以用MD2、MD4、MD5、SHA、SHA1、SHA2_256、SHA2_512七种算法加密字符串,一鸣惊人。今天,我们将学习如何使用哈希字节进行md5加密。

强大的哈希字节函数

哈希字节的语法格式非常简单:

HASHBYTES ( '算法', expression)

第一个参数是用单引号括起来的算法名称,可以是以下七种方式中的任何一种:

MD2 | MD4 | MD5 | SHA | SHA1 | SHA2_256 | SHA2_512

第二个参数是要加密的字符串表达式,可以是常量、变量、表达式或字段。

返回值是varbinary,最大长度为8000。没错,返回值是varbinary,不是直接字符串。先做个小实验,对比空 string和string & # 8217123456’进行MD5加密并查看返回的结果。

select hashbytes('md5',space(0));select hashbytes('md5','123456');

下图是执行的结果:

查询结果看起来是一个加密的字符串,但是类型是varbinary,和我们预想的还是有很大差距。

结合sys.fn _ sqlvarbasetostr将其转换为字符串。

我们想要的结果是MD5加密的字符串,但是hashbytes返回varbinary,这无关紧要。有一个系统函数sys.fn _ sqlvarbasetostr专门用来把varbinary转换成varchar。当然,你可以用其他方式来转换。既然MSSQL提供了直接转换函数,那就不要多此一举了。

sys.fn _ sqlvarbasetostr的语法格式非常简单:

sys.fn_sqlvarbasetostr(varbinary)

该参数是varbinary类型的表达式,返回值是varchar类型的字符串。

让我们从上面的例子中调用sys.fn _ sqlvarbasetostr来进行转换:

select sys.fn_sqlvarbasetostr(hashbytes('md5',space(0)));select sys.fn_sqlvarbasetostr(hashbytes('md5','123456'));

操作效果见下图:

从上图可以看出,varbinary转换为varchar类型,大写改为小写,离我们想要的结果更近了一步,只不过前两位0x不是MD5加密的结果部分,我们还需要使用拦截函数将其杀死。

使用截取函数获得完整的MD5加密结果。

说到拦截函数,恰好在我昨天的帖子《你最应该掌握的七个SQL字符串处理函数》中,提到的函数中至少有两个可以实现这个功能,一个是substring,一个是stuff。

我们先来看看它们的语法格式。

子字符串:

SUBSTRING(expression,start,length)

stuff:

STUFF(expression,start,length,replace)

substring是最直观的使用方法。用stuff有点绕,相当于把前两位切掉,填在空字符串里。让我们从两个方面来处理它:

select substring(sys.fn_sqlvarbasetostr(hashbytes('md5',space(0))),3,32);select stuff(sys.fn_sqlvarbasetostr(hashbytes('md5','123456')),1,2,space(0));

第一种用substring从第3位截取长度为32位,MD5加密的字符串为32位;第二个使用stuff,从第一个位中挖出2位,填入空字符串。可以说,殊途同归。具体结果见下图:

总之,如果我们想用MD5加密一个字符串,完整的语法可以是:

substring(sys.fn_sqlvarbasetostr(hashbytes('md5',待加密字符串)),3,32)

也可以是:

stuff(sys.fn_sqlvarbasetostr(hashbytes('md5',待加密字符串)),1,2,'')

希望对你有帮助!

本文来自霜华投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/599626.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 06-20
下一篇 06-20

相关推荐

  • 怎么将iphone投屏到电脑 苹果手机投屏电脑直播教程

    我们知道,iPhone或iPad可以很容易地将设备的屏幕内容投影到MAC电脑的屏幕上。同样,IOS设备也可以通过屏幕镜像功能将屏幕内容投影到支持投影的电视上,但我们无法将iPhone或iPad的屏幕直接投影到Windows设备上。如果能做到这个功能,那么我们演示PPT、玩游戏、演示应用或者查

    2023-10-25 16:11:47
    1008 0
  • wps怎么打字打不上去详细介绍

    可能是字体设置为白色,打开WPS2019,打开WPS text,点击“开始”选项,点击字体设置选项右下角的箭头图标,进入字体设置页面,找到字体颜色,选择黑色。如果表单无法输入文本,单元格可能被保护,打开WPS表单,单击“审阅”;当您将插入模式更改为重写模式时,您可以打开文档

    2023-07-29 11:19:01
    1053 0
  • 肯德基在线点餐如何看取餐码(去肯德基怎么点餐)

    餐饮消费是老年人接触新消费、体验互联网时代的重要窗口。餐饮品牌应该怎么做才能更好的服务老年人?吃炸鸡喝奶茶“银发族”餐饮受关注。美团发布的《2021银发经济《食品消费洞察》报告显示,50岁以上中老年消费者增速连续四年第一。与此同时,小吃和快餐炸鸡奶茶,中老年人餐

    2023-07-29 10:56:01
    930 0
  • 腾讯桌面整理怎么自启动

    打开电脑管家,点击工具箱,找到“桌面整理”如图所示桌面整理软件上显示“初始化”这个时候其实是在下载程序,根据你的网速可能需要等待12分钟初始化完成后,在桌面上就可以看到如下图所示的一个可爱的小图标,右键桌面。1首先桌面的腾讯视频的图标,双击打开应用程序2 双击

    2023-07-29 10:55:01
    602 0

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信