一、BASE64加密和解密概述
Base64是網絡上最常見的用於傳輸8Bit字節代碼的編碼方式之一,Base64編碼可用於在HTTP環境下傳遞較長的標識信息。例如,在Java Persistence系統Hibernate中,就采用了Base64來將一個較長的唯一標識符(一般為128-bit的UUID)編碼為一個字符串,用作HTTP表單和HTTP GET URL中的參數。在其他應用程序中,也常常需要把二進制數據編碼為適合放在URL(包括隱藏表單域)中的形式。此時,采用Base64編碼具有不可讀性,即所編碼的數據不會被人用肉眼所直接看到。
然而,標准的Base64並不適合直接放在URL里傳輸,因為URL編碼器會把標准Base64中的“/”和“+”字符變為形如“%XX”的形式,而這些“%”號在存入數據庫時還需要再進行轉換,因為ANSI SQL中已將“%”號用作通配符。
為解決此問題,可采用一種用於URL的改進Base64編碼,它不僅在末尾去掉填充的'='號,並將標准Base64中的“+”和“/”分別改成了“-”和“_”,這樣就免去了在URL編解碼和數據庫存儲時所要作的轉換,避免了編碼信息長度在此過程中的增加,並統一了數據庫、表單等處對象
標識符的格式。
BASE64 是對稱的加密算法(PS:對稱加密就是加密用的密碼和解密用的密碼是一樣的,非對稱就是加密和解密用的密鑰不一樣)
參考連接:
BASE64加密和解密
二、Java實現MD5加密解密
1、maven 引入apache的jar(不是maven項目,去網上下一個jar手動引入)
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.3.2</version> </dependency>
2、MD5使用代碼
package com.jd.test; import org.apache.commons.codec.binary.Base64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.UnsupportedEncodingException; /** * * BASE64 通用類 * * @author 浩令天下 * @since 2017.04.15 * @version 1.0.0_1 * */ public class Base64Util { private static final Logger logger = LoggerFactory.getLogger(Base64Util.class); /** * 對給定的字符串進行base64解碼操作 */ public static String decodeData(String inputData) { try { if (null == inputData) { return null; } return new String(Base64.decodeBase64(inputData.getBytes("utf-8")), "utf-8"); } catch (UnsupportedEncodingException e) { logger.error(inputData, e); } return null; } /** * 對給定的字符串進行base64加密操作 */ public static String encodeData(String inputData) { try { if (null == inputData) { return null; } return new String(Base64.encodeBase64(inputData.getBytes("utf-8")), "utf-8"); } catch (UnsupportedEncodingException e) { logger.error(inputData, e); } return null; } /** * 測試入口 * * @param args */ public static void main(String args[]){ String encodeStr=Base64Util.encodeData("龍不吟,虎不嘯"); System.out.println("encodeStr="+encodeStr); String decodeStr=Base64Util.decodeData(encodeStr); System.out.println("decodeStr="+decodeStr); } }
常見加密工具參考鏈接: