SQL Server 数据库中的 MD5 和 SHA1
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/martian6125/archive/2008/05/06/9631439.html
SQL Server 数据库中的 MD5 和 SHA1相关推荐
- SQL Server 数据库中的 MD5 和 SHA1加密算法
MD5 和 SHA1 是一种单向加密算法,常用于密码的验证等需要加密操作的场合,在一般情况下,开发人员可以通过 Delphi 或 PHP 这类语言自己编写相关函数或者使用自带的函数,然后将加密过的结果 ...
- mysql md5 sha1_SQL Server 数据库中的 MD5 和 SHA1加密算法
MD5 和 SHA1 是一种单向加密算法,常用于密码的验证等需要加密操作的场合,在一般情况下,开发人员可以通过 Delphi 或 PHP 这类语言自己编写相关函数或者使用自带的函数,然后将加密过的结果 ...
- mysql md5 sha1_SQL Server 数据库中的 MD5 和 SHA1
MD5 和 SHA1 是一种单向加密算法,常用于密码的验证等需要加密操作的场合,在一般情况下,开发人员可以通过 Delphi 或 PHP 这类语言自己编写相关函数或者使用自带的函数,然后将加密过的结果 ...
- 如何在SQL Server数据库中加密数据
如何在SQL Server数据库中加密数据 为了防止某些别有用心的人从外部访问数据库,盗取数据库中的用户姓名.密码.信用卡号等其他重要信息,在我们创建数据库驱动的解决方案时,我们首先需要考虑的的第一条 ...
- 在ASP.NET中将图片存储到Sql Server数据库中
在ASP.NET中将图片存储到Sql Server数据库中 http://hi.baidu.com/rayshow/blog/item/360e8ff9662c8b5a252df268.html 索引 ...
- 清空SQL Server数据库中所有表数据的方法(转)
清空SQL Server数据库中所有表数据的方法 其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入 ...
- mysql raiserror_RAISERROR在SQL Server数据库中的用法
raiserror 是由单词 raise error 组成 raise 增加; 提高; 提升 raiserror 的作用: raiserror 是用于抛出一个错误.[ 以下资料来源于sql ser ...
- SQL Server数据库中、获得刚插入新记录的自动ID号
以下的文章主要是介绍在SQL Server数据库中正确获得刚插入一条新记录的自动ID号的实际操作过程,下面就是文章对其的主要内容的具体描述,望大家在浏览之后会对其有更深的了解. 使用[IDENT_CU ...
- 从sqlserver中数据写入mysql_[SQL Server]SQL Server数据库中如何返回INSERT INTO语句插入/写入数据后的记录值(比如ID等)?...
问题描述 SQL Server数据库中,有时候当我们使用INSERT INTO语句写入数据后,需要返回写入数据对应的自增ID或者GUID,以便根据此记录进行后续的操作.那么SQL语句如何实现返回记录值 ...
最新文章
- python统计文件行数检测字符串_python统计文件中的字符串数目示例
- 分布式内存数据库的CAP-BASE原理
- python人工智能——机器学习——分类算法-朴素贝叶斯算法
- Oracle IMPDP
- 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 23丨向CEO汇报工作的人【难度中等】​
- 纵表、横表互转的SQL
- jqGrid编辑—公共规则【附视频、ppt、源码】
- [转]Python中多线程与多进程中的数据共享问题!
- mysql中member_在MySql中实现MemberShip的权限管理
- rect函数_Python基础进阶:从函数到高级魔法方法--Day 6
- ArcGIS 拓扑验证与编辑共享要素
- matlab冒号,括号的用法
- 【学习笔记】离散数学(Discrete Math) - 证明 Proof 3
- 【蓝桥杯省赛真题24】Scratch哪吒飞行 少儿编程scratch蓝桥杯省赛真题讲解
- 基于卷积神经网络的皮肤癌检测系统
- 用天翎低代码做办公协同软件,简单高效
- Jenkins发布api jobs,利用supervisor管理运行
- 用JS写小鸟飞行的游戏
- android多看阅读打不开pdf,请收藏!这是一份最全的PDF问题解决方案
- 计算机网络超时重传时间,TCP超时重传机制
热门文章
- oracle 查询表里信息_查看ORACLE 数据库及表信息
- centos 命令行执行多个命令_命令行如何执行jar包里面的方法
- python爬虫ip代理池_爬虫教程-Python3网络爬虫开发——IP代理池的维护
- nosuchelementexception 是什么异常_老公出轨有哪些日常表现?老公出轨异常表现
- FinCEN就非托管加密钱包报告规则征集意见时间将截至今日12时59分
- SAP License:2021年:传统ERP丧钟响起
- 《如何搭建小微企业风控模型》第四节 了解数据源
- SparkStreaming手动维护Kafka Offset的几种方式
- 电商平台营销活动玩法大全、拓客、吸粉、裂变、引流、团购返现、限时折扣、找人代付、砍价代付、多人拼团、优惠套餐、秒杀折扣、满减优惠、电商营销、电商推广、商品促销、营销红包、Axure原型、rp原型
- Key/Value之王Memcached初探:一、掀起Memcached的盖头来