数据加密实战之记住密码、自动登录和加密保存数据运用DES和MD5混合使用
MD5的简介:MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。
MD5算法具有以下特点:
1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
2、容易计算:从原数据计算出MD5值很容易。
3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
注:MD5常用于密码加密。
实战应用:wpf项目中要使用MD5来加密敏感数据保存入库,但是又要可以实现记住密码,MD5是不可逆的无法进行解密,而记住密码保存到本地文件的也是密文,记住密码后再次登录就要先解密一遍赋值给当前界面的密码框,然后点击登录再进行加密与数据库中的作对比,这样就不能使用MD5去进行记住密码了。这里就要使用DES来记住密码保存本地,登录的时候,获取记住的信息DES解密,点击登录再MD5加密即可。
实现过程:
获取界面登录信息
//获取登录信息
loginRecord.Name = tbName.Text.Trim();
loginRecord.MD5Pwd = TrialHelper.GetMD5(tbPwd.Password); //保存到数据库MD5方式
loginRecord.Pwd = TrialHelper.EncryptDES(tbPwd.Password);//记住密码des方式,保存到本地
loginRecord.IsSavePwd = (bool)cbSaveName.IsChecked;
loginRecord.IsAutoLogin = (bool)cbAutoLogin.IsChecked;
实现登录
//用MD5加密的去登录
LoginService.LoginInfo lgInfo=LoginService.LoginService.GetLoginUserInfo(loginRecord.Name, loginRecord.MD5Pwd);
登录成功后记住密码保存账户信息到本地文件
//登录成功后保存配置文件
XmlHelper.XmlSerializeToFile(loginRecord, "LoginInfo.ini");
记住密码登录方式和自动登录方式,再从配置文件读取账户信息赋值到界面,最后点击登录逻辑还是一样,经MD5加密去登录与数据库中的密文进行对比。
//获取登录配置信息并赋值到界面,LoginInfo记录的密码是加密的
loginRecord = XmlHelper.XmlDeserializeFromFile<LoginRecord>("LoginInfo.ini");
if (loginRecord != null)
{
tbName.Text = loginRecord.Name;//用户名输入框赋值
tbPwd.Password = TrialHelper.DecryptDES(loginRecord.Pwd);//密码输入框赋值,Des解密后的值
cbAutoLogin.IsChecked = loginRecord.IsAutoLogin;//自动登录选框
cbSaveName.IsChecked = loginRecord.IsSavePwd; //记住密码选框
if (loginRecord.IsAutoLogin)//自动登录
{
btnLogin_Click(null, null);
}
}
数据加密实战之记住密码、自动登录和加密保存数据运用DES和MD5混合使用的更多相关文章
- php 记住密码自动登录
当我们登录网站管理后台的时候,会有提示说记住登录状态,记住我等这样的提示,这个选项有什么用呢?如果选中了记登录状态后,下次在浏览这个网站后 台时就不用在填写用户名和密码了,在去登录了.下面写了一小代码 ...
- Android记住密码自动登录的实现
我采用的是SharedPreferences来存取数据的,所以先简单的介绍一下SharedPreferences SharedPreferences是Android平台上一个轻量级的存储类,主要是保存 ...
- php实现记住密码自动登录的功能
$username=trim($_POST['username']); $password=md5(trim($_POST['password'])); $ref_url=$_GET['req_url ...
- (转)asp.net 使用cookie完成记住密码自动登录
代码如下 复制代码 string username = this.txtUserName.Text;//用户名 string password = this.txtPassword.T ...
- Win7下怎么设置让远程桌面连接记住密码下次登录不需再输入
远程桌面连接功能想必大家都不会陌生吧,特别是使用VPS服务器的用户们经常会用到,为了服务器的安全每次都会把密码设置的很复制,但是这样也有一个麻烦,就是每次要桌面远程连接的时候都要输入这么复杂的密码,很 ...
- Linux系列:Ubuntu/fedora实用小技巧—禁止自动锁屏、设置免密码自动登录、免密码执行sudo操作
首先声明:该文虽以Ubuntu 13.04为例,同样适用于Fedora 17(已测试),但在较低版本的Ubuntu下可能有所差异,具体看后面的注意事项. 技巧目录: 解决Ubuntu下每隔几分钟自动锁 ...
- linux ssh 不用密码自动登录的几种方法
1. 自动ssh/scp方法== A为本地主机(即用于控制其他主机的机器) ;B为远程主机(即被控制的机器Server), 假如ip为192.168.60.110;A和B的系统都是Linux 在A上运 ...
- PuTTY免输密码自动登录Linux
1.使用PuTTY安装目录里的puttygen.exe工具.先点“生成(Generate)”,然后随意移动鼠标直到进度条填满,即可生成密钥 公钥部分:把上边那一段文字全选->复制备用.(不要点击 ...
- 运用cookie实现记住密码自动登陆:
苦命的程序员:只有博客才能了解我的路!!! 废话不多说:直接上代码: 1.首先在现在登录的页面上来获取cookie的所有: 2.在验证页面来设置clookie的用户名和密码还有是否是自动登录: 到此就 ...
随机推荐
- Python List reverse()方法
reverse() 函数用于反向列表中元素,参数 NA,该方法没有返回值,但是会对列表的元素进行反向排序,原来的列表被改变,生成新的列表. 例子:list1 = ['Google', 'Runoob' ...
- VS2005环境下的DLL应用
VS2005环境下的DLL应用 作者:一点一滴的Beer http://beer.cnblogs.com/ 以前写过一篇题为<VC++的DLL应用(含Demo演示)>的文章,当时是刚开始接 ...
- BZOJ4520:[CQOI2016]K远点对
浅谈\(K-D\) \(Tree\):https://www.cnblogs.com/AKMer/p/10387266.html 题目传送门:https://lydsy.com/JudgeOnline ...
- 最长递增子序列 LIS 时间复杂度O(nlogn)的Java实现
关于最长递增子序列时间复杂度O(n^2)的实现方法在博客http://blog.csdn.net/iniegang/article/details/47379873(最长递增子序列 Java实现)中已 ...
- sourcetree 安装与操作
sourcetree操作 http://www.jianshu.com/p/be9f0484af9d SourceTree安装教程和GitLab配置详解 http://www.cnblogs.com/ ...
- sntp协议简介
SNTP(Simple Network Time Protocal简单网络时间协议),用于跨广域网或局域网同步时间的协议,具有较高的精确度(几十毫秒).SNTP是NTP协议的简化版,两者分别在RFC1 ...
- POJ2230(打印欧拉回路)
Watchcow Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 7473 Accepted: 3270 Specia ...
- java中i/o练习
总结: FileInputStream fis; int length; while((length=fis.read(b,0,b.length))!=-1){ output.write(b,0,le ...
- DCloud-流应用:杂项
ylbtech-DCloud-流应用:杂项 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 6.返回顶部 7.返回顶部 8.返回顶部 9.返回 ...
- Oracle 备份与恢复基础
Oracle 备份与恢复基础 :三思笔记 备份与恢复 A whole database backup is either a consistent backup or an inconsistent ...