java完成Base64加密解密算法。本站提示廣大學習愛好者:(java完成Base64加密解密算法)文章只能為提供參考,不一定能成為您想要的結果。以下是java完成Base64加密解密算法正文
Base64是收集上最多見的用於傳輸8Bit字節代碼的編碼方法之一,年夜家可以檢查RFC2045~RFC2049,下面有MIME的具體標准。Base64編碼可用於在HTTP情況下傳遞較長的標識信息。例如,在Java Persistence體系Hibernate中,就采取了Base64來將一個較長的獨一標識符(普通為128-bit的UUID)編碼為一個字符串,用作HTTP表單和HTTP GET URL中的參數。在其他運用法式中,也經常須要把二進制數據編碼為合適放在URL(包含隱蔽表單域)中的情勢。
此時,采取Base64編碼不只比擬冗長,同時也具有弗成讀性,即所編碼的數據不會被人用肉眼所直接看到。
java的加密方法有許多中,如今給年夜家分享一個Base64加密的方法
package com.crypt; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; /** * BASE64加密解密 * @author YUANWEi */ public class BASE64 { /** * 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); } }
為何要應用Base64加密呢?
Base64編碼的感化:因為某些體系中只能應用ASCII字符。Base64就是用來將非ASCII字符的數據轉換成ASCII字符的一種辦法。它應用上面表中所應用的字符與編碼。
並且base64特殊合適在http,mime協定下疾速傳輸數據。
base64其實不是平安范疇下的加密解密算法。固然有時刻常常看到所謂的base64加密解密。其實base64只能算是一個編碼算法,對數據內容停止編碼來合適傳輸。固然base64編碼事後原文也釀成不克不及看到的字符格局,然則這類方法很低級,很簡略。
Base64編碼辦法請求把每三個8Bit的字節轉換為四個6Bit的字節,個中,轉換以後的這四個字節中每6個有用bit為是有用數據,空余的那兩個 bit用0補上成為一個字節。是以Base64所形成數據冗余不是很嚴重,Base64是現今比擬風行的編碼辦法,由於它編起來速度快並且簡略。
常識彌補:
尺度的Base64其實不合適直接放在URL裡傳輸,由於URL編碼器會把尺度Base64中的“/”和“+”字符變成形如“%XX”的情勢,而這些“%”號在存入數據庫時還須要再停止轉換,由於ANSI SQL中已將“%”號用作通配符。
為處理此成績,可采取一種用於URL的改良Base64編碼,它不在末尾填充'='號,並將尺度Base64中的“+”和“/”分離改成了“*”和“-”,如許就免除了在URL編解碼和數據庫存儲時所要作的轉換,防止了編碼信息長度在此進程中的增長,並同一了數據庫、表單等處對象標識符的格局。
尚有一種用於正則表達式的改良Base64變種,它將“+”和“/”改成了“!”和“-”,由於“+”,“*”和後面在IRCu頂用到的“[”和“]”在正則表達式中都能夠具有特別寄義。
另外還有一些變種,它們將“+/”改成“_-”或“._”(用作編程說話中的標識符稱號)或“.-”(用於XML中的Nmtoken)乃至“_:”(用於XML中的Name)。
Base64請求把每三個8Bit的字節轉換為四個6Bit的字節(3*8 = 4*6 = 24),然後把6Bit再添兩位高位0,構成四個8Bit的字節,也就是說,轉換後的字符串實際大將要比本來的長1/3。
以上就是關於Base64、Base64加密解密算法的全體內容,願望對年夜家停止加密解密的進修有所贊助。