JAVA中使用MD5加密工具类实现对数据的加密处理

1.MD5工具类

package com.ssm.util;

import java.security.MessageDigest;

public class MD5Util {
    //将字节数组转成十六进制字符串
    private static String byteArrayToHexString(byte b[]) {
        StringBuffer resultSb = new StringBuffer();
        for (int i = 0; i < b.length; i++)
            resultSb.append(byteToHexString(b[i]));

        return resultSb.toString();
    }
    //对单个字节转换成整数进行取商取余数计算
    private static String byteToHexString(byte b) {
        int n = b;
        if (n < 0)
            n += 256;
        int d1 = n / 16;
        int d2 = n % 16;
        //根据下标d1,d2去数组hexDigits的数据
        return hexDigits[d1] + hexDigits[d2];
    }

    public static String MD5Encode(String origin, String charsetname) {
        String resultString = null;
        try {
            resultString = new String(origin);
         // 获得MD5摘要算法的 MessageDigest 对象
            MessageDigest md = MessageDigest.getInstance("MD5");
            if (charsetname == null || "".equals(charsetname))
                //将加密之后的字节数据转换成16进制的字符串
                resultString = byteArrayToHexString(md.digest(resultString
                        .getBytes()));
            else
                resultString = byteArrayToHexString(md.digest(resultString
                        .getBytes(charsetname)));
        } catch (Exception exception) {
        }
        return resultString;
    }

    private static final String hexDigits[] = {"0", "1", "2", "3", "4", "5",
            "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};
}

2.在登录注册中使用MD5加密算法

  demo目录结构

  数据库用户表

CREATE TABLE `user` (
  `id` int(20) NOT NULL AUTO_INCREMENT COMMENT ‘编号‘,
  `userName` varchar(50) COLLATE utf8_unicode_ci NOT NULL COMMENT ‘用户名‘,
  `password` varchar(50) COLLATE utf8_unicode_ci NOT NULL COMMENT ‘密码‘,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

  pojo对象User.java

package com.ssm.pojo;

public class User {
    private Integer id;
    private String userName;
    private String password;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }

}

2.1DAO层

  DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,

    • DAO层的设计首先是设计DAO的接口,
    • 然后在Spring的配置文件中定义此接口的实现类,
    • 然后就可在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰,
    • DAO层的数据源配置,以及有关数据库连接的参数都在Spring的配置文件中进行配置。

UserDaO.java

package com.ssm.dao;

import com.ssm.pojo.User;

public interface UserDao {
    //用户注册
    public int register(User user) ;
    //登陆
    public User login(User user);

}

UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ssm.dao.UserDao">
    <resultMap type="com.ssm.pojo.User" id="UserResult">
        <result property="id" column="id" />
        <result property="userName" column="userName" />
        <result property="password" column="password" />

    </resultMap>

    <select id="login" parameterType="com.ssm.pojo.User" resultMap="UserResult">
        select * from
        user where userName=#{userName} and password=#{password} limit 1
    </select>

    <insert id="register" parameterType="com.ssm.pojo.User">
        insert into user(userName,password)
        values(#{userName},#{password})
    </insert>
</mapper> 

2.2业务层:Service层

Service层:Service层主要负责业务模块的逻辑应用设计。

    • 首先设计接口,再设计其实现的类
    • 接着再在Spring的配置文件中配置其实现的关联。这样我们就可以在应用中调用Service接口来进行业务处理。
    • Service层的业务实现,具体要调用到已定义的DAO层的接口,
    • 封装Service层的业务逻辑有利于通用的业务逻辑的独立性和重复利用性,程序显得非常简洁。

UserService.java

package com.ssm.service.impl;

import com.ssm.pojo.User;

public interface UserService {
    public User login(User user);
     public int register(User user);

}

UserServiceImpl.java

package com.ssm.service.impl;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.ssm.dao.UserDao;
import com.ssm.pojo.User;
@Service("userService")
public class UserServiceImpl implements UserService {
    @Resource
    private UserDao userDao;

    public User login(User user) {
        // TODO Auto-generated method stub
        return userDao.login(user);
    }

    public int register(User user) {
        // TODO Auto-generated method stub
        return userDao.register(user);
    }

}

2.3控制层:Controller层

Controller层:Controller层负责具体的业务模块流程的控制

    • 在此层里面要调用Service层的接口来控制业务流程,
    • 控制的配置也同样是在Spring的配置文件里面进行,针对具体的业务流程,会有不同的控制器,我们具体的设计过程中可以将流程进行抽象归纳,设计出可以重复利用的子单元流程模块,这样不仅使程序结构变得清晰,也大大减少了代码量。

RegisterController.java

  

时间: 2024-10-16 20:24:40

JAVA中使用MD5加密工具类实现对数据的加密处理的相关文章

java中IO写文件工具类

下面是一些根据常用java类进行组装的对文件进行操作的类,平时,我更喜欢使用Jodd.io中提供的一些对文件的操作类,里面的方法写的简单易懂. 其中jodd中提供的JavaUtil类中提供的方法足够我们使用,里面的方法写的非常简练,例如append,read等方法,封装更好,更符合面向对象, 这里面我写的一些方法可多都是模仿jodd,从里面进行抽取出来的. /** * 获取路径文件夹下的所有文件 * @param path * @return */ public static File[] ge

java中excel导入\导出工具类

1.导入工具 1 package com.linrain.jcs.test; 2 3 4 import jxl.Cell; 5 import jxl.Sheet; 6 import jxl.Workbook; 7 import jxl.write.Label; 8 import jxl.write.WritableSheet; 9 10 import java.io.InputStream; 11 import java.lang.reflect.Field; 12 import java.te

Java中Date类型的工具类

package com.mytripod.util; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * @author Mytripod * @create 2018-09-30 21:25 */ public class DateUtil { public static String DatePattern

java中常用的并发工具类

· 1. 等待多线程完成的CountDownLatch 构造函数接收一个int类型的参数作为计数器,如果想等待N个点,就传入N.当调用CountDownLatch的countDown方法时,N就会减一,直至减为零.使用await方法等待,当N的值变为零,执行await的线程继续执行. public class CountDownTest { static CountDownLatch c = new CountDownLatch(2); static ExecutorService pool =

java版MD5签名工具类

package com.net.util; import java.security.MessageDigest; /** * MD5签名工具类 * @author zhangdi * */ public class MD5Util { private static String byteArrayToHexString(byte b[]) { StringBuffer resultSb = new StringBuffer(); for (int i = 0; i < b.length; i+

Java MD5,base64,AES加密工具类

import java.io.UnsupportedEncodingException; import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.util.regex.Matcher; import java.util.regex.Pat

android开发MD5加密工具类(一)

MD5加密工具类整理: 1 package com.gzcivil.utils; 2 3 import java.io.UnsupportedEncodingException; 4 import java.security.MessageDigest; 5 import java.security.NoSuchAlgorithmException; 6 7 public class MD5Tool { 8 9 public static String md5(String string) {

加密工具类 - CryptoUtils.java

加密工具类,包含MD5,BASE64,SHA,CRC32的加密与解密方法. 源码如下:(点击下载  - CryptoUtils.java.commons-io-2.4.jar.commons-codec-1.9.jar ) import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java

wemall app商城源码android开发MD5加密工具类

wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享android开发MD5加密工具类主要代码,供技术员参考学习. package com.gzcivil.utils; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgori