zoukankan      html  css  js  c++  java
  • Java使用MD5加密算法,实现等登陆功能

    Java实现MD5加密

    为了保护有些数据,就需要采取一些手段来进行数据的加密,防止被别人破解。

    MD5简介

    md5的全称是md5信息摘要算法(英文:MD5 Message-Digest Algorithm ),一种被广泛使用的密码散列函数,可以产生一个128位(16字节,1字节8位)的散列值(常见的是用32位的16进制表示,比如:0caa3b23b8da53f9e4e041d95dc8fa2c),用于确保信息传输的完整一致。

    功能实现

    1、MD5的工具类

    
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    /**
     * 南宫乘风
     */
    public class MD5Utils {
        /**
         * MD5加密类
         * @param str 要加密的字符串
         * @return    加密后的字符串
         */
        public static String code(String str){
            try {
                MessageDigest md = MessageDigest.getInstance("MD5");
                md.update(str.getBytes());
                byte[]byteDigest = md.digest();
                int i;
                StringBuffer buf = new StringBuffer("");
                for (int offset = 0; offset < byteDigest.length; offset++) {
                    i = byteDigest[offset];
                    if (i < 0)
                        i += 256;
                    if (i < 16)
                        buf.append("0");
                    buf.append(Integer.toHexString(i));
                }
                //32位加密
                return buf.toString();
                // 16位的加密
                //return buf.toString().substring(8, 24);
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
                return null;
            }
        }
    
        /**
         * 测试方法
         * @param args
         */
        public static void main(String[] args) {
            System.out.println(code("111111"));
        }
    }
    

    最下面这个是测试方法

    2、项目中调用

    我在项目的接口中调用MD5的方法

    public User checkUser(String username, String password) {
            User user = userRepository.findByUsernameAndPassword(username, MD5Utils.code(password));
            return user;
        }

    解析:这就是用户登录把密码传递过来,进行MD5加密后,在和数据库中的密码进行对比(数据库中的密码是MD5格式存储的

    3、思路拓展(防止重要信息被盗用)

    1. 账号注册
    2. 密码登录
    3. 信息保护
    4. 资料加密

    等等,许多的功能都可以用到这样的方法来进行加密。

  • 相关阅读:
    .ds_store是什么文件
    style="background-image: url(__HOMEPAGE__/views/IMJ2V2/images/banner2.jpg)"
    前段实现图片懒加载
    thinkphp路由的作用
    thinkphp跨模块调用
    关于肥胖和美国为什么那么多胖子
    php中局部变量和全局变量
    thinkphp5项目--企业单车网站(七)
    thinkphp5项目--企业单车网站(六)
    XSS攻击及防御
  • 原文地址:https://www.cnblogs.com/heian99/p/11972234.html
Copyright © 2011-2022 走看看