MD/SHA加密

MD/SHA256加密是可靠的不可逆过程,主要用于数据的保密。MD5加密速度快但安全性相对较低,而SHA256虽然慢一些,但其安全性更高。两者都是不可逆的,无法从加密后的结果反推出原始信息。

MD/SHA256加密

加密优点:

MD/SHA256加密非常可靠并且是不可逆的
不可逆:正常情况下我们对 “a” 使用MD5字符串加密后会变成一个16进制的字符串(举例:51454ab15165),把任何一个字符串变成一个16进制的字符串,这个是不可逆的。假设有人拿到了加密后的结果(举例:51454ab15165)是不可能反推出 “a” 的。

jar:这里使用commons-codec-1.9.jar

MD5加密

/**  
 * Copyright © 2020wangylCompany. All rights reserved.
 *
 * @Title: SecurityUtil.java
 * @Prject: MyTestDemo
 * @Package: utils
 * @Description: TODO
 * @author: wangyl  
 * @date: 2020年8月27日 下午2:27:57
 * @version: V1.0  
 */

package utils;

import java.io.IOException;
import java.io.InputStream;

import org.apache.commons.codec.digest.DigestUtils;

/**
 * @ClassName: SecurityUtil
 * @Description: TODO	加密和解密
 * @author: wangyl
 * @date: 2020年8月27日 下午2:27:57
 * 
 *
 */

public class SecurityUtil {
	
	/**
	 * 
	 * @Title: md5Encode
	 * @Description: TODO	MD5加密
	 * @author: wangyl 
	 * @param input			加密字节数组
	 * @return
	 * @return: String
	 */
	public static String md5Encode(byte[] input){
		/*
		 * MD5加密需要使用到DigestUtils.md5Hex
		 * 但是md5Hex有三种参数形式
		 * public static String md5Hex(byte[] data)
		 * public static String md5Hex(InputStream data) throws IOException
		 * public static String md5Hex(String data) 
		 * 
		 * 那这里可以选的就有byte[]和String
		 * 这里选用byte[]为参数:
		 * 如果使用String为参数,那么加密就是String---->String
		 * 正常使用参数为abc可以,但是参数为123就不可以了,但是byte[]都可以解析
		 * 加密的对象很多,正常一个实体类对象加密字节数组也是可以解析的
		 * 任何类型的对象都可以转换成字节数组(二进制形式),这里使用byte[]可以实现通用加密
		 * 
		 */
		
		return DigestUtils.md5Hex(input);
		
	}
	
	
	
	
	
	public static void main(String[] args){
		//md5加密
		String input = "MD5方式加密";
		//由于md5使用的参数是字节数组,这里需要进行转换
		String md5Encode = md5Encode(input.getBytes());//加密后的字符串
		System.out.println(input+"\t使用MD5加密:\t"+md5Encode);
		//MD5方式加密	使用MD5加密:	74c59e50306f284c902be9f986db64d9
	}
}

SHA256加密

	/**
	 * 
	 * @Title: sha256Encode
	 * @Description: TODO	SHA加密
	 * @author: wangyl 
	 * @param input			传入一个字节数组
	 * @return
	 * @return: String
	 */
	public static String sha256Encode(byte[] input){
		//这里的参数同MD5类似,还是传入一个字节数组
		return DigestUtils.sha256Hex(input);//Hex指的是16进制
	
	}
//SHA256加密
		String input = "SHA256方式加密";
		//由于md5使用的参数是字节数组,这里需要进行转换
		String sha256Encode = sha256Encode(input.getBytes());//加密后的字符串
		System.out.println(input+"\t使用SHA256加密:\t"+sha256Encode);
		//SHA256方式加密	使用SHA256加密:	24b97a1125f9df6e1c67547776fc4fa11638766c71ddf9626b95f0f4c7d76d9e

MD/SHA加密总结:

1、MD5/SHA256机密理论上来说都是不可逆的
2、MD5的速度相对SHA256快一点
3、SHA256的安全性相对MD5较高

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值