官方定义函数:

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. UVAlive3126 Taxi Cab Scheme(DAG的最小路径覆盖)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=32568 [思路] DAG的最小路径覆盖. 将每个人看做一个结点,如 ...

  2. the identity used to sign the executable is no longer valid.解决方法

    the identity used to sign the executable is no longer valid.解决方法 一.重新下载Provisioning Profile 1.到devel ...

  3. ServletConfig

    ServletConfig Servlet配置 比如web程序中的某一个Servlet需要配置一些初始化信息,需要在web.xml中进行配置 <servlet> <servlet-n ...

  4. Java三十个面试题总结

          都是一些非常非常基础的题,是我最近参加各大IT公司笔试后靠记忆记下来的,经过整理献给与我一样参加各大IT校园招聘的同学们,纯考Java基础功底,老手们就不用进来了,免得笑话我们这些未出校门 ...

  5. session与cookie的关系

    客户第一次发送请求给服务器,此时服务器产生一个唯一的sessionID,并返回给客户端(通过cookie),此时的cookie并没有setMaxAge();只是保存于客户端的内存中,并与一个浏览器窗口 ...

  6. Mysql操作命令出现错误时消除/mysql数据导入txt

    MySQL怎样取消错误命令 http://jingyan.baidu.com/album/546ae1851e9fd61149f28cef.html?picindex=6 mysql导入数据load ...

  7. Centos 多个mysql数据库

    一.编译安装第一个MySQL 5.1.33 ? cd /opt   /usr/sbin/groupadd mysql   /usr/sbin/useradd -g mysql mysql -s /bi ...

  8. CFBundleVersion与CFBundleShortVersionString,版本上架注意事项

    CFBundleVersion,标识(发布或未发布)的内部版本号.这是一个单调增加的字符串,包括一个或多个时期分隔的整数. CFBundleShortVersionString  标识应用程序的发布版 ...

  9. Apache XAMPP Fails to start under Windows XP

    Apache XAMPP Fails to start under Windows XP I’ve been installing XAMPP a hundred times before since ...

  10. Struts2自己定义拦截器实例—登陆权限验证

    版本号:struts2.1.6 此实例实现功能:用户须要指定username登陆,登陆成功进入对应页面运行操作,否则返回到登陆页面进行登陆,当直接訪问操作页面(登陆后才干訪问的页面)时则不同意,须返回 ...