第八章:Shiro加密技术

一、Base64加密/解密 & MD5加密

CryptographyUtil.java

package com.java1234.common;

import org.apache.shiro.codec.Base64;
import org.apache.shiro.crypto.hash.Md5Hash;

/**
 * Base64加密:可逆 MD5加密:不可逆
 */
public class CryptographyUtil {

	public static void main(String[] args) {

		// 要加密的字串
		String password = "123456";
		System.out.println("原字串:" + password);
		
		// MD5加密
		String md5Str = md5(password, "java1234");
		System.out.println("MD5加密后:" + md5Str);
		
		// 加密
		String encStr = encBase64(password);
		System.out.println("Base64加密后:" + encStr);

		// 解密
		String decStr = decBase64(encStr);
		System.out.println("Base64解密后:" + decStr);
	}

	/**
	 * MD5加密
	 * @param str	要加密的字串
	 * @param salt	加密的盐
	 * @return 		加密后的字串
	 */
	public static String md5(String str, String salt) {
		return new Md5Hash(str, salt).toString();
	}

	/**
	 * Base64加密
	 * @param str	要加密的字串
	 * @return 		加密后的字串
	 */
	public static String encBase64(String str) {
		return Base64.encodeToString(str.getBytes());
	}

	/**
	 * Base64解密
	 * @param str	要解密的字串
	 * @return 		解密后的字串
	 */
	public static String decBase64(String str) {
		return Base64.decodeToString(str);
	}
}

二、修改LoginServlet.java【在用户验证过程中,使用的是经过MD5加密后的密码,数据库中存储的也是MD5加密后的密码】

// 用MD5将密码加密
String md5_password = CryptographyUtil.md5(password, "java1234");
		
// 将登录的用户名和密码绑定到令牌Token
UsernamePasswordToken token = new UsernamePasswordToken(userName, md5_password);

三、测试通过

 

posted @ 2017-05-07 21:05  半生戎马,共话桑麻、  阅读(89)  评论(0)    收藏  举报
levels of contents