java base64是什么,讓我們一起了解一下?
Base64是一種編碼方法,要求把每三個(gè)8Bit的字節(jié)轉(zhuǎn)換為四個(gè)6Bit的字節(jié),轉(zhuǎn)換之后的這四個(gè)字節(jié)中每6個(gè)有效bit為有效數(shù)據(jù),空余的那兩個(gè)bit用0補(bǔ)上成為一個(gè)字節(jié)。
為什么要使用Base64?
Base 64主要用途不是加密,而是把一些二進(jìn)制數(shù)轉(zhuǎn)成普通字符,方便在網(wǎng)絡(luò)上傳輸。 由于一些二進(jìn)制字符在傳輸協(xié)議中屬于控制字符,不能直接傳送,所以需要轉(zhuǎn)換一下才可以。由于某些系統(tǒng)中只能使用ASCII字符,Base64就是用來將非ASCII字符的數(shù)據(jù)轉(zhuǎn)換成ASCII字符的一種方法,Base64特別適合在http,mime協(xié)議下快速傳輸數(shù)據(jù)。
比如網(wǎng)絡(luò)中圖片的傳輸Base64,并非安全領(lǐng)域下的加密解密算法。雖然經(jīng)常遇到所謂的base64的加密解密。但base64只能算是一個(gè)編碼算法,對(duì)數(shù)據(jù)內(nèi)容進(jìn)行編碼來適合傳輸。雖然base64編碼過后原文也變成不能看到的字符格式,但是方式初級(jí)又簡單。
那在Java中想要實(shí)現(xiàn)Base64的加解密,有哪些方式?
主要有以下四種(推薦度由低到高):
1、JDK中的sun.misc套件。
2、第三方擴(kuò)展包 bouncy castle。
3、第三方擴(kuò)展包 commons codec。
4、JDK8及更高版本中的 java.util.Base64。
實(shí)戰(zhàn)操作,JDK實(shí)現(xiàn)代碼如下:
import?sun.misc.BASE64Decoder;?? import?sun.misc.BASE64Encoder;?? /**?*?BASE64加密解密?*/?? 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);?? ????}?? ????public?static?void?main(String[]?args)?throws?Exception?{?? ????????String?data?=?BASE64.encryptBASE64("http://aub.iteye.com/".getBytes());?? ????????System.out.println("加密前:"?+?data);?? ????????byte[]?byteArray?=?BASE64.decryptBASE64(data);?? ????????System.out.println("解密后:"?+?new?String(byteArray));?? ????}?? }
以上就是小編今天的分享了,希望可以幫助到大家。