当前位置: 首页 > 编程日记 > 正文

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/lilwzca/archive/2011/11/17/2253023.html

相关文章:

mysql======基本的数据查询(1)

mysql 练习题***创建student表mysql> create table student (-> id int(10) not null unique primary key,-> name varchar(20) not null,-> sex varchar(4),-> brith year,-> deparment varchar(20),-> address varchar(50)-> );Query OK, 0 rows aff…

分享.NET开发中经常使用到的代码片段 完全从实际项目中提取出来,也可被反反复复的重复借用...

几年前,一篇《ASP.NET开发人员经常使用的三十三种代码》非常流行,它总结了一些经常在ASP.NET开发中使用到的代码,直接可以拿来使用。今天重读这篇文章,有感而发,善于总结也是进步,于是我也从我的项目中总结…

Console-算法-冒泡排序法|倒水法

ylbtech-Arithmetic:Console-算法-冒泡排序法|倒水法1.A,案例-- -- ylb:算法 -- type:冒泡法排序 -- thankyou:sunshine, 谢谢你的默默付出 -- 10:50 2012-04-06 -- 1.B,解决方案1.B.1,算法一 using System;namespace ConsoleAp…

Python中如何使用构造方法定义类

每个类都有一个默认的__init__()方法,如果在定义类时显式地定义了__init__()方法,则创建对象时Python解释器会调用显式定义的__init__()方法;如果定义类时没有显式定义__init__()方法,那么Python解释器会调用默认的__init__()方法。 __init__…

vs中将网站aspx.cs文件打包成一个dll

vs中将网站aspx.cs文件打包成一个dll 23小时前 vs中将网站asp.net cs文件打包成一个dll。 在vs2008以上的版本中可以建立web应用来开发网站,这样网站aspx.cs文件【生成网站】的时候就会自动生产单个dll,如果使用的是网站的话那就不能。那介绍一种微软提…

刻意练习:LeetCode实战 -- Task05. 最接近的三数之和

背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式,即选择了五个知识点(数组、链表、字符串、树、贪心算法),每个知识点选择了…

ECMAScript6——Set数据结构

/*** 数据结构 Set*/// ----------------------------------------------------- /*** 集合的基本概念:集合是由一组无序且唯一(即不能重复)的项组成的。这个数据结构使用了与有限集合相同的数学概念,应用在计算机的数据结构中。*…

UI设计培训需要学哪些内容

想要学习UI设计并没有想象中那么简单的,UI设计需要学习的内容有很多,那么具体UI设计培训需要学哪些内容呢?来看看下面小编的详细介绍就知道了。 UI设计培训需要学哪些内容? 在ui设计中,需要的基础是一些简单的美术基础和平面设计基础&#…

4.html 头部随笔

1、html头部标记<base>&#xff1a;当前文档的URL全称&#xff08;基底地址&#xff09;<basefont>&#xff1a;设定基准的文字字体、字号和颜色<title>&#xff1a;网页标题<isindex>&#xff1a;表明文档是一个可用于检索的网管脚本&#xff0c;有服…

Python统计字符串中的中英文字符、数字空格,特殊字符

# -*- coding:utf8 -*-import stringfrom collections import namedtupledef str_count(s): 找出字符串中的中英文、空格、数字、标点符号个数 count_en count_dg count_sp count_zh count_pu 0 s_len len(s) for c in s: # 英文 if c in stri…

刻意练习:LeetCode实战 -- Task07. 合并两个有序链表

背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法&#xff08;Leetcode&#xff09;刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式&#xff0c;即选择了五个知识点&#xff08;数组、链表、字符串、树、贪心算法&#xff09;&#xff0c;每个知识点选择了…

Java入门培训班怎么选择

想要学习java技术&#xff0c;小编一直给小伙伴推荐的是报班学习&#xff0c;目前市面上的java培训机构有很多&#xff0c;对于java培训班的选择很多小伙伴都比较迷茫&#xff0c;下面小编就为大家详细的介绍一下Java入门培训班怎么选择的问题。 Java入门培训班怎么选择?一般正…

开源图形库 FreeImage

一个自由、开源的图形库--FreeImage (支持位图构件―例 如调色板和数据位―的便易访问&#xff1b;将位图从一种位深度转换到另一种位深度&#xff1b;当有多幅位图页―例如TIFF―时访问位图的不同页&#xff1b;基本的位图处理&#xff0c;如旋转、翻 转&#xff08;flipping&…

刻意练习:LeetCode实战 -- Task08.删除排序链表中的重复元素

背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法&#xff08;Leetcode&#xff09;刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式&#xff0c;即选择了五个知识点&#xff08;数组、链表、字符串、树、贪心算法&#xff09;&#xff0c;每个知识点选择了…

notepad++ 快捷键

2019独角兽企业重金招聘Python工程师标准>>> 1. 文件相关 快捷键动作定义Ctrl-O打开文件Ctrl-N新建文件Ctrl-S保存文件Ctrl-Alt-S文件另存为Ctrl-Shift-S保存所有打开文件Ctrl-P打印Alt-F4退出程序Ctrl-Tab文件标签跳转&#xff0c;跳至下一个打开文件Ctrl-Shift-Ta…

怎样使用Spring Boot项目的单元测试

在实际开发中&#xff0c;每当完成一个功能接口或业务方法的编写后&#xff0c;通常都会借助单元测试验证该功能是否正确。Spring Boot对项目的单元测试提供了很好的支持&#xff0c;在使用时&#xff0c;需要提前在项目的pom.xml文件中添加spring-boot-starter-test测试依赖启…

关于生成id的问题

表明表最大id 方法1&#xff1a; GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[getserial] serialname char(30) AS begin declare serialno int begin transaction select serialno SV_nSerial from SystemVariable with(TABLOCKX HOLDLOCK…

刻意练习:LeetCode实战 -- Task09. 环形链表

背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法&#xff08;Leetcode&#xff09;刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式&#xff0c;即选择了五个知识点&#xff08;数组、链表、字符串、树、贪心算法&#xff09;&#xff0c;每个知识点选择了…

CentOS学习笔记 - 9. docker maven编译基于gofabric8的java应用镜像

2019独角兽企业重金招聘Python工程师标准>>> 续上一篇 1. 修改java工程的pom.xml &#xff0c; 加入docker编译插件 <plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.0.0</…

Java虚拟机中获得Runtime实例的方法是什么?

Runtime类用于表示Java虚拟机运行时的状态&#xff0c;它用于封装Java虚拟机进程。每次使用“java”命令启动Java虚拟机时都会对应一个Runtime实例&#xff0c;并且只有一个实例&#xff0c;应用程序会通过该实例与其运行时的环境相连。应用程序不能创建自己的Runtime实例&…

仿百度文库方案[openoffice.org 3+swftools+flexpaper](三) 之 使用JODConverter将office文档转换为pdf...

第三步&#xff0c;使用JODConverter将office文档转换为pdf JODConverter是一个java的OpenDucument文件转换器&#xff0c;可以进行许多文件格式的转换&#xff0c;它利用 OpenOffice来进行转换工作&#xff0c;它能进行以下的转换工作&#xff1a; 1.Microsoft Office格式转换…

刻意练习:LeetCode实战 -- Task10. 两数相加

背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法&#xff08;Leetcode&#xff09;刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式&#xff0c;即选择了五个知识点&#xff08;数组、链表、字符串、树、贪心算法&#xff09;&#xff0c;每个知识点选择了…

Ether-channel 以太网通道

Ether-channel通常称之为以太网链路捆绑&#xff0c;或者叫链路汇聚&#xff0c;链路聚合。作用&#xff1a;将多个类似的接口&#xff0c;捆绑成一个逻辑接口&#xff0c;从而增加设备之间的传输带宽增加设备之间的连接可靠性不但可以在链路设备之间形成链路备份&#xff0c;还…

web前端开发培训有哪些学习阶段

​ web前端技术主要针对于移动互联网是比较多的&#xff0c;对于零基础的同学来说前期主要学习基本的静态布局&#xff0c;HTML CSS&#xff0c;下面是web前端开发培训有哪些学习阶段的具体内容。 ​ web前端开发培训有哪些学习阶段? 一、html5如何学习 1.HTML5 CSS3 JQ …

自己动手重新实现LINQ to Objects: 9 - SelectMany

本文翻译自Jon Skeet的系列博文“Edulinq”。 本篇原文地址&#xff1a; http://msmvps.com/blogs/jon_skeet/archive/2010/12/27/reimplementing-linq-to-objects-part-9-selectmany.aspx 我们接下来要实现的这个操作符是LINQ中最重要的操作符。大多数&#xff08;或者是全部…

1.8 centos7 的PATH、cp/mv/文档查看命令介绍

环境变量PATH什么是环境变量&#xff1f;环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数&#xff0c;如&#xff1a;临时文件夹位置和系统文件夹位置等。[rootcentos7 ~]# echo $PATH #查看PATH环境变量 /usr/local/sbin:/usr/local/bin:/usr/sbin…

刻意练习:LeetCode实战 -- Task11. 删除链表的倒数第N个节点

背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法&#xff08;Leetcode&#xff09;刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式&#xff0c;即选择了五个知识点&#xff08;数组、链表、字符串、树、贪心算法&#xff09;&#xff0c;每个知识点选择了…

https和http有什么区别?看下面介绍就知道了!

https和http有什么区别?相信很多还在学习软测的同学们&#xff0c;都会有遇到这种问题&#xff0c;下面就是小编给大家介绍的http相关的知识 。 一、http和https基本概念 1. HTTP&#xff1a;是互联网上应用最为广泛的一种网络协议&#xff0c;是一个客户端和服务器端请求和应…

C#图片灰度处理(位深度24→位深度8),用灰度数组byte[]新建一个8位灰度图像Bitmap 。...

原文:C#图片灰度处理(位深度24→位深度8) #region 灰度处理/// <summary>/// 将源图像灰度化&#xff0c;并转化为8位灰度图像。/// </summary>/// <param name"original"> 源图像。 </param>/// <returns> 8位灰度图像。 </return…

日期NSDate的使用

日期类NSDate,存储的是世界标准时(UTC)&#xff0c;输出时需要根据时区转换为本地时间方法description字符串以GMT0展示日期如&#xff1a;2011-11-16 07:02:25 0000测试的北京时间&#xff1a;2011-11-16 15:02:25.324/))))((((/格式化日期类型&#xff0c;使用NSDateFormatte…