应用于生产环境的BASE64与MD5混合加密程序示例

MD5: 全称为message digest algorithm 5(信息摘要算法), 可以进行加密, 但是不能解密, 属于单向加密, 通常用于文件校验
Base64: 把任意序列的8位字节描述为一种不易为人识别的形式, 通常用于邮件、http加密. 登陆的用户名和密码字段通过它加密, 可以进行加密和解密.

package com.myteacher;

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

import java.util.Base64;

public class EncrptBase64MD5 {
/**
 * 
 * @param 要加密密码参数 password
 * @param 设置秘钥secret
 * @return最终返回值固定长度加密值
 */

public static String enctptEncode(String password, String secret)  {
  //利用jdk1.8的base64第一次编码,加密密码password
String pwd = Base64.getEncoder().encodeToString(password.getBytes());
  //利用jdk1.8的base64第一次编码,加密秘钥secret
String key = Base64.getEncoder().encodeToString(secret.getBytes());
MessageDigest md;
String result=null;
try {
//创建一个提供信息摘要算法的对象,初始化为"MD5"算法对象,或初始化为"SHA"也可以

md = MessageDigest.getInstance("MD5");

//md = MessageDigest.getInstance("SHA");

//通过调用digest()对base64单向编码后的密码和秘钥执行哈希计算,获得密文  
byte[] msg=md.digest(pwd.concat(key).getBytes());
//利用jdk1.8的base64单向编码再次加密密文,获得最终密码
result = Base64.getEncoder().encodeToString(msg);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return result;
}

public static void main(String[] args) {
System.out.println(EncrptBase64MD5.enctptEncode("dengkaiyao", "aligator"));
System.out.println(EncrptBase64MD5.enctptEncode("我的老师APP", "133^_^5760"));
}

}

输出结果(长度恒定24位):

 wa0xH/4IHXKI2Y9khbYYww==
UF4kXsmMtOia9N/VQuDWQ==

猜你喜欢

转载自blog.csdn.net/sinat_21263479/article/details/79165320