数据加密实战之记住密码、自动登录和加密保存数据运用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的用户名和密码还有是否是自动登录: 到此就 ...
随机推荐
- JSONP解决跨域方案
一.jsonp原理 本质并不是ajax,只是执行了跨域js,所以该方式只支持get方式 html中,所有带src属性的标签都可以跨域script img iframe 所以,可以通过script加载其 ...
- GMT时间
GMT:格林尼标准时间 北京时间=GMT时间+8小时
- bzoj 4591 [Shoi2015]超能粒子炮·改——组合数前缀和
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4591 先说说自己的想法: 从组合意义的角度考虑,从n个里选<=k个,就添加k个空位置, ...
- 第十篇 javascript基础语法
1)基本概念 a) 语句(statement)是为了完成某种任务而进行的操作,语句以分号结尾,一个分号就表示一个语句结束.:如:var a = 1; b) 表达式(expression),指一个为了得 ...
- POJ3104(二分搜索)
Drying Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 13057 Accepted: 3358 Descripti ...
- [转载]proc_mkdir与proc_create
1:创建proc文件夹struct proc_dir_entry *proc_mkdir(const char *name, struct proc_dir_entry *parent);参数1:na ...
- Nor Flash的CFI与JEDEC接口
Flash 存储器接口还有两个标准:CFI和JEDEC.CFI为公共Flash接口[Common Flash Interface],用来帮助程序从Flash芯片中获取操作方式信息(发送命令,从nor ...
- python IOError: windows directory not found at xxxxx win32
您需要修改 PATH 环境变量,将Python的可执行程序及额外的脚本添加到系统路径中.将以下路径添加到 PATH 中: C:\Python2.7\;C:\Python2.7\Scripts\;请打开 ...
- docker 笔记 (7) 限制容器
内存 -m 或 --memory:设置内存的使用限额,例如 100M, 2G.--memory-swap:设置 内存+swap 的使用限额.--vm 1:启动 1 个内存工作线程.--vm-bytes ...
- C++深度解析教程学习笔记(1)C到C++的升级
1.现代软件产品架构图 比如商场收银系统 2.C 到 C++ 的升级 2.1变量的定义 C++中所有的变量都可以在需要使用时再定义,而 C 语言中的变量都必须在作用域开始位置定义. 2.2 regis ...