!
也想出现在这里? 联系我们
广告位
当前位置:首页>技术分享>网站运维>Mysql和SQL Server数据库中的MD5和SHA1加密算法

Mysql和SQL Server数据库中的MD5和SHA1加密算法

MD5 和 SHA1 是一种单向加密算法,常用于密码的验证等需要加密操作的场合,在一般情况下,开发人员可以通过 Delphi 或 PHP 这类语言自己编写相关函数或者使用自带的函数,然后将加密过的结果根据需要存储到数据库中。

但在某些情况下,可能需要在数据库端计算 MD5 和 SHA1 哈希值,比如说在存储过程或自定义函数内部。开源数据库 MySQL就提供类似这样的内置函数。

以下语句就可以分别显示字符串"12345"的 MD5 和 SHA1 值,返回结果为字符串型:

但 SQL Server    中没有直接提供类似这样的函数。在 SQL Server 2000 中,如果需要加密可以使用未文档化的  pwdencrypt() 和 pwdcompare() 函数来加密数据和比较结果,加密方式是微软自己的算法,随着 SQL Server 版本的升级,函数的加密结果可能也会有所不同。

不过在 SQL Server 2005 中,微软提供了一个函数 hashbytes() 可以用来计算一个字符串的 MD5 和 SHA1 值。

以下语句分别获得字符串 "12345” 的 MD5 和 SHA1:

hashbytes() 函数的返回结果是 varbinary 型,也就是以 0x 开头 16 进制形式的二进制数据,不过通常情况下,我们需要的都是字符串型的数据,很多人首先想到的可能就是用 CAST 或 Convert 函数将varbinary 转换为 varchar,但这样转换后的结果会是乱码,正确转换 varbinary 可变长度二进制型数据到 16 进制字符串应该使用系统内置函数 sys.fn_VarBinToHexStr(),如下所示:

sys.fn_varBinToHexStr() 函数只在 SQL Server 2005 中有效,在 SQL Server 2000 中实现相同功能使用系统扩展存储过程:master..xp_varBinToHexStr 。

给TA打赏
共{{data.count}}人
人已打赏
网站运维

SQL如何把一个表的数据复制到另外一个表里面(如何把一个表中的数据复制到另一个表)

2022-10-12 19:19:11

网站运维

WordPress数据库表前缀如何修改?WP数据库表前缀修改教程

2022-10-12 19:19:53

声明 本站上的部份代码及教程来源于互联网,仅供网友学习交流,若您喜欢本文可附上原文链接随意转载。无意侵害您的权益,请发送邮件至 2651636361@qq.com 或点击右侧 私信:少羽 反馈,我们将尽快处理。
0 条回复A文章作者M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索