zoukankan      html  css  js  c++  java
  • 使用md5加密 登录、注册

    摘要算法

      摘要算法也称为哈希算法、散列列算法,可以将任意长度的数据转换成一个定长的、不可逆的数字。只要原
    文本不不同,计算的结果必然不同(几乎不用考虑重复的情况)。摘要算法⽤用于对比信息源是否一致,因为
    只要数据源发生变化,得到的摘要信息必然不同,通常用于签名校验。

    消息摘要算法的特点:

    1. 无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。
    2. 消息摘要不是真正的随机,因为用相同的算法对相同的消息求两次摘要,其结果必然相同
    3. 消息摘要函数是无陷⻔门的单向函数,即只能进行正向的信息摘要,而无法从摘要中恢复出任何的消息,甚⾄至根本就找不到任何与原信息相关的信息

    常见的摘要算法有:MD5、SHA-1、MAC、CRC等;

    sha1与md5的区别:https://www.cnblogs.com/scu-cjx/p/6878853.html

    下载前端加密需要用到的js,http://pajhome.org.uk/crypt/md5/

     测试

     使用md5.js

    <script type="text/javascript" src="js/md5-min.js"></script>
    <script type="text/javascript">
        var hex = hex_md5("admin");
        console.log(hex);
    </script>

    结果验证:https://www.cmd5.com/

     使用md5前台加密加盐+后台加密加盐注册:

    1、前端页面

    $("#registerbtn").click(function () {
        var username = $("#username").val();
        //使用md5加密加盐
        var salt = "hhj"
        var password = hex_md5($("#rpassword2").val()+salt); //加密方法
        $.post("/user/registered",
              {  "username":username,
                 "password":password
              }
        , function (rs) {
               console.log(rs);
       }, "json");
    });    

    2、后台工具类

    public class EncryptUtils {
        //自定义盐值
        public static final String SALT = "itheima";
       //MD5加密
        public static String md5s(String plainText) {
            String str = "";
            try {
                MessageDigest md = MessageDigest.getInstance("MD5");
                md.update(plainText.getBytes());
                byte b[] = md.digest();
    
                int i;
    
                StringBuffer buf = new StringBuffer("");
                for (int offset = 0; offset < b.length; offset++) {
                    i = b[offset];
                    if (i < 0)
                        i += 256;
                    if (i < 16)
                        buf.append("0");
                    buf.append(Integer.toHexString(i));
                }
                str = buf.toString();
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
            return str;
        }
    }

    sha1 工具类:

    public static String SHA1(String decript) {
            try {
                MessageDigest digest = MessageDigest
                        .getInstance("SHA-1");
                digest.update(decript.getBytes());
                byte messageDigest[] = digest.digest();
                // Create Hex String
                StringBuffer hexString = new StringBuffer();
                // 字节数组转换为 十六进制 数
                for (int i = 0; i < messageDigest.length; i++) {
                    String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
                    if (shaHex.length() < 2) {
                        hexString.append(0);
                    }
                    hexString.append(shaHex);
                }
                return hexString.toString();
    
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
            return "";
        }
    View Code

    3、后台service方法的编写

    @Override
        public boolean register(T_user user) throws Exception {
            //使用md5进行二次加密加盐
            user.setPassword(EncryptUtils.md5s(user.getPassword() + EncryptUtils.SALT));
            return userMapper.insert(user) > 0 ? true : false;
        }

    数据库中密码字段显示密文:

     登录用户(输入密码再次加密判断是否与数据库中的一致)

    1、前端页面(注意加密方法、盐值必须一致

    $("#loginbtn").click(function(){
            //使用md5加密加盐
            var  salt="hhj";
            var rpassword=hex_md5($("#rpassword").val()+salt);
    。。。

    2、后台验证

    @Override
    public T_user login(T_user user) throws Exception {
       //使用md5进行二次加密加盐
       user.setPassword(EncryptUtils.md5s(user.getPassword() + EncryptUtils.SALT));
      QueryWrapper<T_user> query = new QueryWrapper<>();
       query.eq("password", password);
       return userMapper.selectOne(query);
    }
  • 相关阅读:
    sql server identity限制
    基于JQUERY的WEB在线流程图设计器GOOFLOW 0.5版
    windows internal读书笔记
    获取异常的具体出处——dbms_utility.format_error_backtrace
    FORM个性化——调用报表
    接口表GL_INTERFACE中的字段STATUS表示的含义
    数据结构——java Queue类
    数据结构——Java Stack 类
    用cmd运行java可以javac不行(win10)
    Spring配置数据源的三种方法
  • 原文地址:https://www.cnblogs.com/64Byte/p/13396876.html
Copyright © 2011-2022 走看看