官方定义函数:

HashBytes ( '<algorithm>', { @input | 'input' }

<algorithm>::= MD2 | MD4 | MD5 | SHA | SHA1

参数解释:

algorithm:标识用于对输入执行哈希操作的哈希算法。这是必选参数,无默认值。需要使用单引号。

@input : 数据类型为 varchar、nvarchar 或 varbinary

'input' 字符串数据

返回值:

varbinary (最大8000字节)

备注:允许的输入值限制为 8000 个字节。输出符合算法标准:MD2、MD4 和 MD5 为 128 位(即 16 个字节);SHA 和 SHA1 为 160 位(即 20 个字节)

一:示例MD5加密:

一个完整的写法:

PRINT    LOWER(RIGHT(sys.fn_varbintohexstr(HASHBYTES('MD5','这个字符串需要加密')),32))   >> 8926206f9ebb0bee4bbb0724fccb4410

下面逐步拆分

1.先用HashBytes函数看看生成的结果

PRINT HASHBYTES('MD5','这个字符串需要加密')   >>  0x8926206F9EBB0BEE4BBB0724FCCB4410

由于该函数返回的值是二进制varbinary 数据,不是字符串不能直接使用,所以要将其转换为字符串

2.用sys.fn_varbintohexstr(@pbinin)

@pbinin : varbinary (max) 数据类型

返回:nvarchar 数据类型

PRINT sys.fn_varbintohexstr(HASHBYTES('MD5','这个字符串需要加密'))  >>  0x8926206f9ebb0bee4bbb0724fccb4410

3.如何得到32位的MD5值,貌似最大也就只能到32位,使用 Right 函数进行截取

PRINT RIGHT(sys.fn_varbintohexstr(HASHBYTES('MD5','这个字符串需要加密')),32) >> 8926206f9ebb0bee4bbb0724fccb4410

函数定义

RIGHT ( character_expression , integer_expression )
参数:
character_expression :可为字符或二进制数据表达式,常量,变量,列,任何能隐式转换为varchar或nvarchar的数据类型(text,ntext需要进行显示转换)
integer_expression :正整数,将返回的字符数
返回值:character_expression 若为 非Unicode 返回 varchar , 若为unicode 则返回nvarchar

4.如果需要统一大小写 可使用  lower(character_expression )  , upper(character_expression ) 进行转换

二:关于MD5加密的字符编码问题

先来几段对比

1. 字符 “è”

SQLServer :C05FC85230C60ED8FECB3670E77E603D

结果:与C# gb2312对应

2. 字符 “这是汉字”

SQLServer : E8C9AB48B603F81B87F4ED4F1005BB6E

结果:与C# gb2312对应

3. 字符 “123456”

 

SQLServer : E10ADC3949BA59ABBE56E057F20F883E

结果:与C# gb2312,utf-8 , utf-7 , ascii  对应

4.字符 “pxs123”

 

SQLServer : 684D95499489435C9351EFCDD68B25F2

结果:与C# gb2312,utf-8 , utf-7 , ascii  对应

4.字符 “pxs!@#.”

SQLServer :FC05D7826726E773E993BDCA88F6B181

结果:与C# gb2312,utf-8 , ascii  对应

5.字符 英文符号“!@#.&*)|_;“

SQLServer :4C782D772102482D09696D11BDE1A02A

结果:与C# gb2312,utf-8 , ascii  对应

6.字符 中文英混合符号“《!)*、“

SQLServer :1A891B7B5B3285925E2783694C2A367C

结果:与C# gb2312对应

6.字符 中文英混合符号“汉字hanzi“

SQLServer :49212C24BDB2FA254880119A332F86D6

结果:与C# gb2312对应

8.字符 “プログラミン“

SQLServer :045B556A9CF5F0FE92EC7A7C9B3F66CA

结果:与C# gb2312对应

综上对比:

sqlserver中md5加密函数,字符存在非英文字符会按照gb2312方式编码计算出加密值,那么C#,JS等计算MD5加密值是就需要转为gb2312编码,才能得出一样的结果。

若为都为英文字符时,用utf-8编辑即可

sqlserver 进行MD5加密的更多相关文章

  1. MySql md5加密 sqlserver md5加密 C# md5加密 java md5加密

    便民md5加密: 百度md5加密: MySQL 加密语法: MD5(加密字符串) -- 中文加密 SELECT MD5('你好') -- 中文加密匹配查询 SELECT * FROM 表名 WHERE ...

  2. 一个简单的后台与数据库交互的登录与注册[sql注入处理,以及MD5加密]

    一.工具: vs2013[因为我现在用的也是2013,版本随便你自己开心] sql2008[准备过久升级] 二.用到的语言: HTML+CSS+Jquery+Ajax+sqlserver HTML[相 ...

  3. SQL将原始数据进行MD5加密转存

    先来描述下情况吧,首先有一批用户之前批量录入后默认的密码为6个8然后进行MD5加密后进行存储的,现在需要对其更改根据用户身份证号后6位作为密码. 1.首先发现我们sqlserver05以上的版本是自带 ...

  4. 【信息安全】MD5加密浅析

    前段时间,网传京东泄露了几G的用户数据,后面又说用户数据是MD5加密的,让大家不要担心,改个密码之类云云. 出于好奇,上网了解了一下这个MD5. 一.MD5加密方式是什么 简单讲,MD5加密是一个用到 ...

  5. 关于CryptoJS中md5加密以及aes加密的随笔

    最近项目中用到了各种加密,其中就包括从没有接触过得aes加密,因此从网上各种查,官方的一种说法: 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学 ...

  6. Android数据加密之MD5加密

    前言: 项目中无论是密码的存储或者说判断文件是否是同一文件,都会用到MD5算法,今天来总结一下MD5加密算法. 什么是MD5加密? MD5英文全称“Message-Digest Algorithm 5 ...

  7. android MD5加密

    public class MD5Uutils {    //MD5加密,32位    public static String MD5(String str) {        MessageDige ...

  8. IOS 杂笔-9 (MD5 加密)

    首先是一段对MD5的简介 *出自一位大牛之手* Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护 ...

  9. JS中使用MD5加密

    下载 MD5 使用MD5加密的方法:下载md5.js文件,在网页中引用该文件: < script type="text/javascript" src="md5.j ...

随机推荐

  1. floyd详解

    就不在来回搬了 请看 http://note.youdao.com/groupshare/?token=6422E952998F4381A1534B71359EFA57&gid=1579165 ...

  2. [jAudio] JAVA上经典特征提取工具

    1.下载Jar包后引入 现在的问题是jAudio通常是给人UI进行操作的,直接使用怎么办? 看了源码,发现特征提取是通过类之间交叉调用实现的,是否有办法整合一下?

  3. Corporate Identity - HDU 2328(多串求共同子串)

    题目大意:给你N(2-4000)个字符串,求出来他们的共同子串   分析:因为上次就说了再出现这种题就不用那种暴力的做法了,于是看了一些别的知识,也就是后缀树,把一个字符串的所有的后缀全部都加入字典树 ...

  4. android里Toast的用法

    在活动中,可以通过findViewById()方法获取到在布局文件中定义的元素,这里我们传入R.id.button_1,来得到按钮的实例,这个值是刚才在first_layout.xml中通过andro ...

  5. 基于MyBatis的数据库切分框架,可实现数据的水平切分和垂直切分。 http://www.makersoft.org

    https://github.com/makersoft/mybatis-shards MyBatis-Shards 专业的MyBatis数据库切分框架 MyBatis Shards简介 MyBati ...

  6. Android 使用加速度传感器实现摇一摇功能及优化

    如有转载,请声明出处: 时之沙: http://blog.csdn.net/t12x3456 目前很多应用已经实现了摇一摇功能,这里通过讲解该功能的原理及实现回顾一下加速度传感器的使用: 1.首先获得 ...

  7. 在Qt中使用sleep

      关于sleep函数,我们先来看一下他的作用:sleep函数是使调用sleep函数的线程休眠,线程主动放弃时间片.当经过指定的时间间隔后,再启动线程,继续执行代码.sleep函数并不能起到定时的作用 ...

  8. C++ 让 Win32 Console Application 程序后台运行

    方法一:(无闪现) 添加   #pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRT ...

  9. [转] 使用CodeViz生成C/C++函数调用关系图

    运行环境:虚拟机下的Ubuntu 11.04 结合Graphviz工具,使用CodeViz可以生成直观和漂亮的C/C++程序函数之间的调用关系图. 1.安装graphviz 在安装CodeViz之前, ...

  10. 文件标准IO的mode

    1. r / r+ 是不创建文件,前者只读,后者可读写 2. w / w+ 是能创建文件,并且把文件置空,前者只写,后者可读写 3. a / a+ 是能创建文件,但不置空文件,在文件末尾写,前者只写, ...