zoukankan      html  css  js  c++  java
  • 数据加密实战之记住密码、自动登录和加密保存数据运用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);
                    }
                }
  • 相关阅读:
    TCP/IP:IP的分片与重装
    TCP/IP:IP选项处理
    TCP/IP:IP多播选路
    TCP/IP:IGMP Internet组管理协议
    TCP/IP 插口选项
    TCP/IP: 插口I/O
    TCP/IP 插口层
    leetcode136只出现一次的数字
    leetcode268缺失数字
    letecode242有效字母的异位词
  • 原文地址:https://www.cnblogs.com/qinyi173/p/7150485.html
Copyright © 2011-2022 走看看