1. 程式人生 > >JAVA中使用MD5加密工具類實現對數據的加密處理

JAVA中使用MD5加密工具類實現對數據的加密處理

歸納 ssa utf int 控制 nic this com nod

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

  

JAVA中使用MD5加密工具類實現對數據的加密處理