关于Sql server数据 MD5加密
最近在写一个web项目时,需要在数据库中将用户密码等一类信息进行加密处理。数据加密算法有许多 ,各有各的优缺点;在 http://www.cnblogs.com/yangywyangyw/archive/2012/07/31/2620861.html一文中对各种加密算法进行了介绍。之前,有对数据进行加密,由于许久没写,在加密处理上出了一些问题。找了一些博客,但没能很好解决问题。 本次项目的加密,采用的是MD5加密,MD5是一个安全的散列算法,输入两个不同的明文不会得到相同的输出值,根据输出值,不能得到原始的明文,即其过程不可逆;所以要解密MD5没有现成的算法,只能用穷举法,把可能出现的明文,用MD5算法散列之后,把得到的散列值和原始的数据形成一个一对一的映射表,通过比在表中比破解密码的MD5算法散列值,通过匹配从映射表中找出破解密码所对应的原始明文。
第一步: 创建MD5Help类
public static string EncryptString(string str)
{
//utf8 x2
//创建对象的方法,构造方法,静态方法
MD5 md5 = MD5.Create();
//调用MD5加密方法
//将字符串转换为字节数组
byte[] byteOld = Encoding.GetEncoding("GBK").GetBytes(str);
byte[] byteNew = md5.ComputeHash(byteOld);
//将加密结果进行 转换字符串
StringBuilder sb = new StringBuilder();
foreach (byte b in byteNew)
{
//将字符转换成16进制表示的字符串,而是占用从两头来
sb.Append(b.ToString("x2"));
}
//返回加密字符串
return sb.ToString(); }
}
第二步:对需要加密数据进行加密
例如对字符串 string str =admin" 加密;
调用方法: Md5Helper.EncryptString(string str)。得到返回字符串结果:21232f297a57a5a743894a0e4a801fc3,数据库存储结果: 21232f297a57a5a743894a0e4a801fc3
第三步:获取验证数据与加密数据进行对比
对验证数据,调用 Md5Helper.EncryptString(string str) 方法.,得到加密后数据 与数据库存储数据进行对比.但需要强调的是 ,验证数据需要调用两次加密方法。
string str2 = Md5Helper.EncryptString( Md5Helper.EncryptString(str))
最初,我一直加密一次验证数据与数据库中加密数据进行对比,结果一直通不过。通过调试程序,发现:
从数据库取出已经加密的数据为:c3284d0f94606de1fd2af172aba15bf3 。这与“admin”数据第一次加密数据不同。因此,我对数据进行两次加密,得到以下结果:
第一次加密结果为:21232f297a57a5a743894a0e4a801fc3
第二次加密结果为:c3284d0f94606de1fd2af172aba15bf3
验证数据第二次加密结果与数据库获取加密数据一致。
在解决验证数据与数据库密码的对比之后,还发现一个问题。我采用的是sql server 数据库,数据库是别人建立好后给我。由于每个人设置不同,数据库编码不同,数据库编码格式不同,需要对MD5Helper类中的代码进行改造:
//将字符串转换为字节数组
byte[] byteOld = Encoding.GetEncoding("GBK").GetBytes(str);
对于这段代码需要根据数据库的编码格式进行改造,数据编码为utf-8的需要将GetEncoding 设置为utf-8.对于如何查询 数据库的编码格式,,可以参考这篇文章:
http://www.cnblogs.com/print-true/p/5765031.html ------- - ------查询Sql Server 编码格式.
关于Sql server数据 MD5加密的更多相关文章
- Sql Server数据的加密与解密
Sql Server数据的加密与解密 在sql server中,我们如何为数据进行加密与解密,避免使用者窃取机密数据? 对于一些敏感数据,如密码.卡号,一般不能使用正常数值来存储.否则会有安全隐患.以 ...
- SQL Server 2005 MD5函数
原文:SQL Server 2005 MD5函数 在SQL Server 2005下自带的函数HashBytes() ,此函数是微软在SQL Server 2005中提供的,可以用来计算一个字符串的M ...
- [转]细说SQL Server中的加密
简介 加密是指通过使用密钥或密码对数据进行模糊处理的过程.在SQL Server中,加密并不能替代其他的安全设置,比如防止未被授权的人访问数据库或是数据库实例所在的Windows系统,甚至是数据库所在 ...
- 细说SQL Server中的加密【转】
简介 加密是指通过使用密钥或密码对数据进行模糊处理的过程.在SQL Server中,加密并不能替代其他的安全设置,比如防止未被授权的人访问数据库或是数据库实例所在的Windows系统,甚至是数据库所在 ...
- 细说SQL Server中的加密
简介 加密是指通过使用密钥或密码对数据进行模糊处理的过程.在SQL Server中,加密并不能替代其他的安全设置,比如防止未被授权的人访问数据库或是数据库实例所在的Windows系统,甚至是数据库所在 ...
- SQL Server中的加密
参考文献: 细说SQL Server中的加密 Transparent Data Encryption (TDE) Database Encryption Key (DEK) management SQ ...
- (4.23)SQL Server中的加密
转自:https://www.cnblogs.com/CareySon/archive/2012/04/01/SQL-SERVER-Encryption.html 简介 加密是指通过使用密钥或密码对数 ...
- SQL server数据缓存依赖
SQL server数据缓存依赖有两种实现模式,轮询模式,通知模式. 1 轮询模式实现步骤 此模式需要SQL SERVER 7.0/2000/2005版本以上版本都支持 主要包含以下几 ...
- [SQL]SQL Server数据表的基础知识与增查删改
SQL Server数据表的基础知识与增查删改 由张晨辉(学生) 于19天 前发表 | 阅读94次 一.常用数据类型 .整型:bigint.int.smallint.tinyint .小数:decim ...
随机推荐
- CentOs下Mongodb的下载与安装
1.下载MongoDB(64位) http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.4.9.tgz tar zxvf mongodb-lin ...
- hive:框架理解
1. 什么是hive •Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能. •本质是将HQL转换为MapReduce程序 2. 为什么 ...
- Ubuntu 11.10下GRUB 2 1.99版编译安装笔记
Ubuntu 11.10下GRUB 2 1.99版编译安装笔记 以下的安装笔记,都是QLi自己学习grub2 时,所整理的,还是新手,有错误的话,请大家帮忙就别提出来了. 最新版grub V1.99官 ...
- hi3531的pcie控制器使能
1. 关闭PCIe 控制器: 通过向系统控制寄存器PERIPHCTRL30[pcie0_app_ltssm_enabl]写入0 关闭PCIe0 控制 器. 通过向系统控制寄存器PERIPHCTRL77 ...
- Caused by: java.lang.ClassNotFoundException: org.apache.commons.fileupload.RequestContext
1.错误描述 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help ...
- Flex中怎么给表格中的滚动条定位
1.问题背景 如果表格中的字段过多,会出现滚动条,在将滚动条滚到一定的位置时,重新刷新表格,滚动条会回到原处,原来查看的字段还得继续滚动,才能查看到. 2.实现实例 <?xml version= ...
- 【原】Java学习笔记027 - 泛型
package cn.temptation.test; import java.util.ArrayList; import java.util.Iterator; public class Samp ...
- 芝麻HTTP:Python爬虫入门之Cookie的使用
为什么要使用Cookie呢? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密) 比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓 ...
- class-k近邻算法kNN
1 k近邻算法2 模型2.1 距离测量2.2 k值选择2.3 分类决策规则3 kNN的实现--kd树3.1 构造kd树3.2 kd树搜索 1 k近邻算法 k nearest neighbor,k-NN ...
- 【JDK1.8】JUC.Lock综述
一.前言 前段时间结束了jdk1.8集合框架的源码阅读,在过年的这段时间里,一直在准备JUC(java.util.concurrent)的源码阅读.平时接触的并发场景开发并不很多,但是有网络的地方,就 ...