先研究些比较基础的。
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、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(); } }