sqlserver 进行MD5加密
官方定义函数:
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加密的更多相关文章
- MySql md5加密 sqlserver md5加密 C# md5加密 java md5加密
便民md5加密: 百度md5加密: MySQL 加密语法: MD5(加密字符串) -- 中文加密 SELECT MD5('你好') -- 中文加密匹配查询 SELECT * FROM 表名 WHERE ...
- 一个简单的后台与数据库交互的登录与注册[sql注入处理,以及MD5加密]
一.工具: vs2013[因为我现在用的也是2013,版本随便你自己开心] sql2008[准备过久升级] 二.用到的语言: HTML+CSS+Jquery+Ajax+sqlserver HTML[相 ...
- SQL将原始数据进行MD5加密转存
先来描述下情况吧,首先有一批用户之前批量录入后默认的密码为6个8然后进行MD5加密后进行存储的,现在需要对其更改根据用户身份证号后6位作为密码. 1.首先发现我们sqlserver05以上的版本是自带 ...
- 【信息安全】MD5加密浅析
前段时间,网传京东泄露了几G的用户数据,后面又说用户数据是MD5加密的,让大家不要担心,改个密码之类云云. 出于好奇,上网了解了一下这个MD5. 一.MD5加密方式是什么 简单讲,MD5加密是一个用到 ...
- 关于CryptoJS中md5加密以及aes加密的随笔
最近项目中用到了各种加密,其中就包括从没有接触过得aes加密,因此从网上各种查,官方的一种说法: 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学 ...
- Android数据加密之MD5加密
前言: 项目中无论是密码的存储或者说判断文件是否是同一文件,都会用到MD5算法,今天来总结一下MD5加密算法. 什么是MD5加密? MD5英文全称“Message-Digest Algorithm 5 ...
- android MD5加密
public class MD5Uutils { //MD5加密,32位 public static String MD5(String str) { MessageDige ...
- IOS 杂笔-9 (MD5 加密)
首先是一段对MD5的简介 *出自一位大牛之手* Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护 ...
- JS中使用MD5加密
下载 MD5 使用MD5加密的方法:下载md5.js文件,在网页中引用该文件: < script type="text/javascript" src="md5.j ...
随机推荐
- bzoj 2324 [ZJOI2011]营救皮卡丘(floyd,费用流)
2324: [ZJOI2011]营救皮卡丘 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1777 Solved: 712[Submit][Stat ...
- nyist 58 最小步数 BFS
最少步数 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 1,0 ...
- 使用Array
public class UsingArray { public static void output(int[]Array) { if(Array!=null) ...
- 转载:linux capability深入分析
转至http://www.cnblogs.com/iamfy/archive/2012/09/20/2694977.html 一)概述: 1)从2.1版开始,Linux内核有了能力(capabili ...
- .NET 基础 一步步 一幕幕[面向对象之new、this关键字]
经常会有人问:小伙子,有没有对象啊,要不要大叔我帮你介绍一个啊,小伙子会说:大叔,不用我自己new一个就好了.(PS:活该你没有对象) 上边当然是一个段子咯,程序员那会没有对象,自己new一个就有了啊 ...
- java随机数与数组的使用。
java随机数与数组的使用. 一:题目 二 代码: public class Students { int number; // 学号 int State ; // 年级 ...
- boost------bind的使用(Boost程序库完全开发指南)读书笔记
bind是c++98标准库中函数适配器bind1st/bind2nd的泛化和增强,可以适配任意的可调用类型,包括函数指针.函数引用.成员函数指针和函数对象. 1.工作原理 bind并不是一个单独的类或 ...
- Atitit.hibernate体系结构大总结
Atitit.hibernate体系结构大总结 1. 4.1 hibernate基础语义 80 4.1.1 configuration 80 4.1.2 sessionfactory 81 4. ...
- android shape的使用详解以及常用效果(渐变色、分割线、边框、半透明阴影效果等)
shape使用.渐变色.分割线.边框.半透明.半透明阴影效果. 首先简单了解一下shape中常见的属性.(详细介绍参看 api文档 ) 转载请注明:Rflyee_大飞: http://blog.cs ...
- STL——临时对象的产生与运用
所谓临时对象,就是一种无名对象.它的出现如果不在程序员的预期之下(例如任何pass by value操作都会引发copy操作,于是形成一个临时对象),往往造成效率上的负担.但有时候刻意制造一些临时对象 ...