java加密研究

先研究些比较基础的。

BASE64:

这种加密方式,是将数据加密->发送加密数据,然后对方对数据进行解密。

import java.security.MessageDigest;

import Decoder.BASE64Decoder;
import Decoder.BASE64Encoder;


public class BASE64Test {
	 public static final String KEY_MD5 = "MD5";
	
	public static void main(String[] args) throws Exception{
		String password = "123456";
		
		//byte[] password = ;
		System.out.println(encryptBASE64(password.getBytes()));
		
		System.out.println(encryptMD5(password.getBytes()));
		System.out.println(encryptBASE64(encryptMD5(password.getBytes())));
	}
	
	/**
	 * BASE64解密
	 * 
	 * @param key
	 * @return
	 * @throws Exception
	 */
	public static byte[] decryptBASE64(String key) throws Exception {
		return (new BASE64Decoder()).decodeBuffer(key);
	}

	/**
	 * BASE64加密
	 * 
	 * @param key
	 * @return
	 * @throws Exception
	 */
	public static String encryptBASE64(byte[] key) throws Exception {
		return (new BASE64Encoder()).encodeBuffer(key);
	}
	
	/**
	 * MD5加密
	 * 
	 * @param data
	 * @return
	 * @throws Exception
	 */
	public static byte[] encryptMD5(byte[] data) throws Exception {

		MessageDigest md5 = MessageDigest.getInstance(KEY_MD5);
		md5.update(data);

		return md5.digest();

	}


}

上面还有一种加密方式,MD5。

其中MD5、SHA、HMAC是不可逆加密,也就是说不能解密的。

MD5是将加密方式发送给乙方,将数据进行摘要处理,将原始数据发送给乙方,对方对甲方发过来原始数据进行摘要处理,然后进行验证。

SHA,安全散列算法,数字恰名等密码学应用中重要的工具。较之MD5安全。

甲方公布信息摘要算法给乙方,然后甲方将数据做信息摘要处理,处理后发送原始数据、信息摘要给乙方,然后乙方对原始数据做摘要处理,然后校验摘要信息是否相同。

	/**
	 * SHA加密
	 * 
	 * @param data
	 * @return
	 * @throws Exception
	 */
	public static byte[] encryptSHA(byte[] data) throws Exception {

		MessageDigest sha = MessageDigest.getInstance(KEY_SHA);
		sha.update(data);

		return sha.digest();

	}
}

安全散列算法,该算法的思想是,接收一段明文,将明文以一种不可逆的方式转换为密文(通常更小),也可以简单的理解为取一串输入码(称为预映射或者信息),并把他们转换为长度较短、位数固定的输出序列,即散列值(也可称为信息摘要)。


你可能感兴趣的:(java加密研究)