浅谈Base64编码算法
一、什么是編碼解碼
編碼:利用特定的算法,對(duì)原始內(nèi)容進(jìn)行處理,生成運(yùn)算后的內(nèi)容,形成另一種數(shù)據(jù)的表現(xiàn)形式,可以根據(jù)算法,再還原回來(lái),這種操作稱之為編碼。
解碼:利用編碼使用的算法的逆運(yùn)算,對(duì)經(jīng)過(guò)編碼的數(shù)據(jù)進(jìn)行處理,還原出原始數(shù)據(jù),這種操作稱之為解碼。
?
二、什么是Base64編碼算法
可以將任意的字節(jié)數(shù)組數(shù)據(jù),通過(guò)算法,生成只有(大小寫(xiě)英文、數(shù)字、+、/)(一共64個(gè)字符)內(nèi)容表示的字符串?dāng)?shù)據(jù)。
即將任意的內(nèi)容轉(zhuǎn)換為可見(jiàn)的字符串形式。
?
三、Base64算法的由來(lái)
以前發(fā)送郵件只支持可見(jiàn)字符的傳送。由此,需要有一個(gè)方法將不可見(jiàn)的字符轉(zhuǎn)換為可見(jiàn)的字符,便產(chǎn)生了Base64編碼算法
?
四、Base64算法的特點(diǎn)
1、將數(shù)據(jù)按照?3個(gè)字節(jié)一組的形式進(jìn)行處理,每三個(gè)字節(jié)在編碼之后被轉(zhuǎn)換為4個(gè)字節(jié)。
即:如果一個(gè)數(shù)據(jù)有6個(gè)字節(jié),可編碼后將包含6/3*4=8個(gè)字節(jié)
2、當(dāng)數(shù)據(jù)的長(zhǎng)度無(wú)法滿足3的倍數(shù)的情況下,最后的數(shù)據(jù)需要進(jìn)行填充操作,即補(bǔ)“=” ,這里“=”是填充字符,不要理解為第65個(gè)字符
?
eg: 三個(gè)字節(jié) ,轉(zhuǎn)換成 4個(gè)字節(jié) 的過(guò)程:
?
可以看出,將原始數(shù)據(jù)的 每三個(gè)字節(jié)分為一組,按位進(jìn)行分割為 每6位一個(gè)字節(jié)的形式,進(jìn)行轉(zhuǎn)換,形成新的4個(gè)字節(jié)。這四個(gè)字節(jié)才通過(guò)Base64編碼表進(jìn)行映射,形成最后實(shí)際的Base64編碼結(jié)果。
如果原始數(shù)據(jù)最后無(wú)法湊成3個(gè)字節(jié),則補(bǔ)填充,以“=”作為替換,代表沒(méi)有數(shù)據(jù)
?
五、
Base64編碼索引表
?
六、Base64使用場(chǎng)景
1、服務(wù)器給客戶端在JSON中傳遞二進(jìn)制數(shù)據(jù)
2、客戶端給服務(wù)器傳遞參數(shù)時(shí),通過(guò)Base64傳遞二進(jìn)制內(nèi)容
?
七、注意點(diǎn)
1、Base64是編碼算法,不是加密算法,只是用來(lái)編碼字節(jié)數(shù)組,形成字符串的,并提供了解碼功能
2、Base64.encodeToString(byte[] data,int flag);
第二個(gè)參數(shù)設(shè)置NO_WRAP 即代表生成的字符串是否換行
Base64.encode(String str,int flag)同上
淺談Base64編碼算法
轉(zhuǎn)載于:https://www.cnblogs.com/guxuanqing/p/10618815.html
總結(jié)
以上是生活随笔為你收集整理的浅谈Base64编码算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SOAR SQL进行优化和改写的自动化工
- 下一篇: 美国热搜 “1个字形容2020年”:IB