Base64 加密算法原理
Base64是網絡上最常見的用於傳輸8Bit字節碼的編碼方式之一,Base64就是一種基於64個可打印字符來表示二進制數據的方法。
因爲在內存中每個字節佔8位,即 1 byte = 8 bit,所有的數據都可以先轉成ascii碼,然後將對應的ascii碼轉爲8位長度的二進制數據,比如 s 對應 115-> 01110011。
而base64做的就是將所有的二進制數據 6位爲一個數據進行轉化的一個算法。因爲6位二進制數據最多可以表示0~63共64個,所以名爲Base64,對應的可以有Base32,Base128算法。
Base64 加密的過程
首先建立一個0~63的數據字典:
舉例,如果我們加密字符串 “s”,s轉化ascii碼 115,再轉化爲二進制爲01110011。
01110011 按6位一個,不足末位補0,但是每次補0需要補八個0,所以最後的位數應該是大於等於當前二進制位數的6和8的最小公倍數。比如當前位數爲8,所以補位後長度應該是24。
01110011 00000000 00000000
011100 110000 000000 000000
28 48 末位補位 末位補位
末位補位用=來表示,則根據上面數據字典則爲:
cw==
Base64加密的安全程度
上面看了Base64的加密方式,可以看出不管加密解密,只需要按照固定的規則即可,所以是不是Base64就不夠安全呢?
其實不然。
針對於Base64,因爲解密時需要對每一個字符進行重編碼來計算原字符串,所以只需要在加密字符串前面加上固定的字符即可對加密字符串進行混淆。
如s加密後爲cw==,在前面加上字符a組成acw==,這時如果一個人不知道我們加的是a還是ac,或者什麼都沒加,他一定不能得到原來的字符串。