zoukankan      html  css  js  c++  java
  • MD5加密技术

    MD5加密技术
    MD5是哈希算法中的一种,加密强度较为适中。哈希算法有下面几个特点:
    ①不可逆,即使在已知加密过程的前提下,无法从密文反推回明文。
    ②输出数据的长度固定。例如:MD5加密输出数据的长度固定就是32个字符。
    ③输入数据不变,输出数据不变;输入数据变,输出数据都会跟着变。

    /**
     * 执行MD5加密的工具方法
     * @param soucre
     * @return
     */
    public static String md5(String soucre) {    
    	// 1.对字符串进行校验
    	boolean checkResult = stringCheck(soucre);    
    	// 2.如果字符串校验失败,则抛出一个异常
    	if (!checkResult) {
    		throw new RuntimeException(ACConst.MESSAGE_PWD_INVALID);
    	}    
    	// 3.将源字符串转换为字节数组
    	byte[] inputBytes = soucre.getBytes();    
    	// 4.获取MessageDigest实例
    	String algorithm = "md5";    
    	// 5.声明变量存储加密结果
    	byte[] outputBytes = null;    
    	try {    
    		// 6.获取MessageDigest实例
    		MessageDigest digest = MessageDigest.getInstance(algorithm);    
    		// 7.执行加密
    		outputBytes = digest.digest(inputBytes);
    	} catch (NoSuchAlgorithmException e) {
    		e.printStackTrace();
    	}    
    	// 8.把加密结果字节数组转换为字符串
    	// ①声明StringBuilder
    	StringBuilder builder = new StringBuilder();    
    	// ②声明字符数组
    	char[] characters = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E','F' };    
    	// ③遍历outputBytes
    	for (int i = 0; i < outputBytes.length; i++) {    
    		byte b = outputBytes[i];    
    		// ③取当前字节的低四位数值
    		int lowValue = b & 15;    
    		// ④取当前字节的高四位数值
    		int highValue = (b >> 4) & 15;    
    		// ⑤使用高四位和低四位的值从characters字符数组中取出对应的字符
    		char lowChar = characters[lowValue];
    		char highChar = characters[highValue];    
    		// ⑥拼字符串
    		builder.append(highChar).append(lowChar);    
    	}    
    	return builder.toString();
    }
    
  • 相关阅读:
    回归,随缘写一些python心得吧
    划分树【有些东西,其实自己还不太会也要忍住把*装完】
    [codevs3273]两圆的交 计算几何
    10-12考试整理
    10-7考试整理
    [codevs1163]访问艺术馆
    [codevs2640]打印页数
    9-28 解题报告
    [CODEVS3323]时空跳跃者的封锁
    [codevs2442] kshort 经典题
  • 原文地址:https://www.cnblogs.com/javawxid/p/12812058.html
Copyright © 2011-2022 走看看