Base64 加密算法原理
Base64 加密算法原理
Base64是網(wǎng)絡(luò)上最常見(jiàn)的用于傳輸8Bit字節(jié)碼的編碼方式之一,Base64就是一種基于64個(gè)可打印字符來(lái)表示二進(jìn)制數(shù)據(jù)的方法。
因?yàn)樵趦?nèi)存中每個(gè)字節(jié)占8位,即 1 byte = 8 bit,所有的數(shù)據(jù)都可以先轉(zhuǎn)成ascii碼,然后將對(duì)應(yīng)的ascii碼轉(zhuǎn)為8位長(zhǎng)度的二進(jìn)制數(shù)據(jù),比如 s 對(duì)應(yīng) 115-> 01110011。
而base64做的就是將所有的二進(jìn)制數(shù)據(jù) 6位為一個(gè)數(shù)據(jù)進(jìn)行轉(zhuǎn)化的一個(gè)算法。因?yàn)?位二進(jìn)制數(shù)據(jù)最多可以表示0~63共64個(gè),所以名為Base64,對(duì)應(yīng)的可以有Base32,Base128算法。
Base64 加密的過(guò)程
首先建立一個(gè)0~63的數(shù)據(jù)字典:
舉例,如果我們加密字符串 “s”,s轉(zhuǎn)化ascii碼 115,再轉(zhuǎn)化為二進(jìn)制為01110011。
01110011 按6位一個(gè),不足末位補(bǔ)0,但是每次補(bǔ)0需要補(bǔ)八個(gè)0,所以最后的位數(shù)應(yīng)該是大于等于當(dāng)前二進(jìn)制位數(shù)的6和8的最小公倍數(shù)。比如當(dāng)前位數(shù)為8,所以補(bǔ)位后長(zhǎng)度應(yīng)該是24。
01110011 00000000 00000000
011100 110000 000000 000000
28 48 末位補(bǔ)位 末位補(bǔ)位
末位補(bǔ)位用=來(lái)表示,則根據(jù)上面數(shù)據(jù)字典則為:
cw==
Base64加密的安全程度
上面看了Base64的加密方式,可以看出不管加密解密,只需要按照固定的規(guī)則即可,所以是不是Base64就不夠安全呢?
其實(shí)不然。
針對(duì)于Base64,因?yàn)榻饷軙r(shí)需要對(duì)每一個(gè)字符進(jìn)行重編碼來(lái)計(jì)算原字符串,所以只需要在加密字符串前面加上固定的字符即可對(duì)加密字符串進(jìn)行混淆。
如s加密后為cw==,在前面加上字符a組成acw==,這時(shí)如果一個(gè)人不知道我們加的是a還是ac,或者什么都沒(méi)加,他一定不能得到原來(lái)的字符串。
與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的Base64 加密算法原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ThreadLocal 变量和 与线程池
- 下一篇: mac 上开发需要的软件