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

但在某些情况下,可能需要在数据库端计算 MD5 和 SHA1 哈希值,比如说在存储过程或自定义函数内部。开源数据库 MySQL就提供类似这样的内置函数,以下语句就可以分别显示字符串"12345"的 MD5 和 SHA1 值,返回结果为字符串型:
                       select md5('12345');
                       select sha1('12345');

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

不过在 SQL Server 2005 中,微软提供了一个函数 hashbytes() 可以用来计算一个字符串的 MD5 和 SHA1 值,以下语句分别获得字符串 "12345” 的 MD5 和 SHA1:

select hashbytes('MD5′, '12345′) ;
                      select hashbytes('SHA1′, '12345′) ;

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

select sys.fn_VarBinToHexStr(hashbytes('MD5′, '12345′))

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

转载于:https://www.cnblogs.com/lilwzca/archive/2011/11/17/2253023.html

SQL Server 数据库中的 MD5 和 SHA1加密算法相关推荐

  1. SQL Server 数据库中的 MD5 和 SHA1

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

  2. mysql md5 sha1_SQL Server 数据库中的 MD5 和 SHA1加密算法

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

  3. mysql md5 sha1_SQL Server 数据库中的 MD5 和 SHA1

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

  4. 如何在SQL Server数据库中加密数据

    如何在SQL Server数据库中加密数据 为了防止某些别有用心的人从外部访问数据库,盗取数据库中的用户姓名.密码.信用卡号等其他重要信息,在我们创建数据库驱动的解决方案时,我们首先需要考虑的的第一条 ...

  5. 在ASP.NET中将图片存储到Sql Server数据库中

    在ASP.NET中将图片存储到Sql Server数据库中 http://hi.baidu.com/rayshow/blog/item/360e8ff9662c8b5a252df268.html 索引 ...

  6. 清空SQL Server数据库中所有表数据的方法(转)

    清空SQL Server数据库中所有表数据的方法 其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入 ...

  7. mysql raiserror_RAISERROR在SQL Server数据库中的用法

    raiserror  是由单词 raise error 组成 raise  增加; 提高; 提升 raiserror 的作用: raiserror 是用于抛出一个错误.[ 以下资料来源于sql ser ...

  8. SQL Server数据库中、获得刚插入新记录的自动ID号

    以下的文章主要是介绍在SQL Server数据库中正确获得刚插入一条新记录的自动ID号的实际操作过程,下面就是文章对其的主要内容的具体描述,望大家在浏览之后会对其有更深的了解. 使用[IDENT_CU ...

  9. 从sqlserver中数据写入mysql_[SQL Server]SQL Server数据库中如何返回INSERT INTO语句插入/写入数据后的记录值(比如ID等)?...

    问题描述 SQL Server数据库中,有时候当我们使用INSERT INTO语句写入数据后,需要返回写入数据对应的自增ID或者GUID,以便根据此记录进行后续的操作.那么SQL语句如何实现返回记录值 ...

最新文章

  1. oracle 条件反转,Oracle反转倒置函数
  2. 解决ubuntu系统安装完后启动项里没有ubuntu的问题
  3. 计算机电缆的屏蔽,DJYVP计算机电缆(总屏蔽)和DJYPVP计算机电缆(分屏蔽加总屏蔽)区别...
  4. Linux 命令 alternatives和update-alternatives
  5. 反思学习方法:后推前 前推后
  6. 2018/Province_Java_A/2/星期一
  7. SAP Cloud for Customer创建Account也会生成对应的Business partner实例
  8. 单编译framework相关模块
  9. nginx学习笔记001---Nginx的启动、停止与重启
  10. UVA10268 498-bis【多项式】
  11. python是什么意思中文、好学吗-爬虫Python入门好学吗?学什么?
  12. [转载] python| map()函数应用详解
  13. linux技术发展方向,linux技术的发展方向有哪些?Linux运维入门
  14. Python 破解 MD5 暗号
  15. 反汇编---汇编基础学习
  16. AI实践之路:线性/逻辑回归背后的广义线性模型与最大似然估计
  17. struts1 使用poi组件 读取excel文件,创建excel ,输出excel文件
  18. 微信扫码登陆在chrome浏览器被拦截
  19. sklearn中的支持向量机SVM(下)
  20. R Z-score结果

热门文章

  1. oracle外键如何创建索引,子表建立外键的索引问题
  2. vs2015开发c语言 简书,微软符号服务器_NT_SYMBOL_PATH给VS调试带来的隐藏坑
  3. centos php ioncube_Linux/Centos 安装PHP ioncube扩展
  4. 机器学习四剑客1——Numpy
  5. 回归分析中的“回归”
  6. HDU - 5874 Friends and Enemies 完全二分图
  7. Python实现一元及多元线性回归
  8. chrome 禁用https限制http_HTTP协议走过29年漏洞百出:Firefox可直接禁用
  9. java string对象创建_String对象创建个数
  10. 【系列文章】面向自动驾驶的三维点云处理与学习(2)