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 。

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

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

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

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

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

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

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

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

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

  5. mysql查询加伪列_SQL Server数据库中伪列及伪列的含义详解

    SQL Server中的伪列 下午看QQ群有人在讨论(非聚集)索引的存储,说,对于聚集索引表,非聚集索引存储的是索引键值+聚集索引键值:对于非聚集索引表,索引存储的是索引键值+RowId,这应该是一个 ...

  6. mysql raiserror_sql server数据库中raiserror函数的用法

    server数据库中raiserror的作用就和asp.NET中的throw new Exception一样,用于抛出一个异常或错误.这个错误可以被程序捕捉到. raiserror的常用格式如下: r ...

  7. mysql raiserror_sql server数据库中raiserror函数用法的详细介绍

    sql server数据库中raiserror函数的用法 server数据库中raiserror的作用就和asp.NET中的throw new Exception一样,用于抛出一个异常或错误.这个错误 ...

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

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

  9. ExcelToDatabase:批量导入Excel文件到MySQL/Oracle/SQL Server数据库的自动化工具

    ExcelToDatabase:批量导入Excel到MySQL/Oracle/SQL Server数据库的自动化工具 简介 ExcelToDatabase 是一个可以批量导入excel到mysql/o ...

最新文章

  1. Python3 reversed 函数
  2. Crunch Bang(linux)安装Webstorm上手
  3. 颜宁强烈推荐:给研究生的四条金玉良言
  4. html 导航右侧弹出层,CSS导航栏及弹窗示例代码
  5. zabbix 2.2自动安装脚本
  6. 1121:计算矩阵边缘元素之和
  7. uctools.php,discuz 论坛UCenter无法登录,闪退的终极8种解决办法
  8. 图片延迟加载和滑动翻页
  9. Linux用户管理命令和压缩解压命令
  10. VS2017下的getch函数
  11. 令你的网站获得任意Google PR值的方法!
  12. winform程序:newtonsoft json 序列化时出现 “unterminated string. Excepted delimiter...
  13. PLC控制系统接地要求
  14. 社会工程学利用的人性_社会互程学利用的人性“弱点”
  15. 陕西师范大学第七届程序设计竞赛网络同步赛 D ZQ的睡前故事(java)
  16. XBrowser增加Jslog日志对象接口
  17. 工具篇 | 获取邮箱的登陆授权码
  18. 响应式网站设计(2)-关于网站制作你不知道的那些文件儿
  19. 一种人机交互界面工效评价方法
  20. rtt 使用fal时出现找不到分区表问题

热门文章

  1. 大部分的期货品种开户是没有门槛
  2. TemporalAdjusters.previous
  3. #if #endif作用
  4. android OTG
  5. javascript之offsetHeight/offsetWidth
  6. DeblurGAN:使用条件对抗网络的盲目运动去模糊
  7. 国产数据库达梦与ORACLE的异同概述
  8. onchange 事件
  9. justify-content、align-content、align-items、align-self的区别
  10. 受保护的PDF如何解决