base64是網路上最常見的用於傳輸8bit位元組碼的編碼方式之一,base64就是一種基於64個可列印字元來表示二進位制資料的方法。因為在記憶體中每個位元組佔8位,即 1 byte = 8 bit,所有的資料都可以先轉成ascii碼,然後將對應的ascii碼轉為8位長度的二進位制資料,比如 s 對應 115-> 01110011。
而base64做的就是將所有的二進位制資料 6位為乙個資料進行轉化的乙個演算法。因為6位二進位制資料最多可以表示0~63共64個,所以名為base64,對應的可以有base32,base128演算法。
首先建立乙個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,因為解密時需要對每乙個字元進行重編碼來計算原字串,所以只需要在加密字串前面加上固定的字元即可對加密字串進行混淆。
如s加密後為cw==,在前面加上字元a組成acw==,這時如果乙個人不知道我們加的是a還是ac,或者什麼都沒加,他一定不能得到原來的字串。
iOS中Base64加密演算法
base64加密演算法 base64是網路上最常見的用於傳輸8bit位元組 的編碼方式之一,可用於在http環境下傳遞較長的標識資訊。它的優點是演算法效率高,編碼出來的結果比較簡短,同時也具有不可讀性。base64要求把每三個8bit的位元組按照每6bit一組的長度分割成四組 3 8 4 6 24 ...
base64加密原理
今天面試被問到以前的專案有沒有用到網路傳輸加密,當時腦袋抽風沒想起來直接說了沒有。回來後看書看到了base64幾個字,頓時醒悟了過來。明明最近的專案就用到了base64方法加密的,只是做的比較久遠了,後面又沒怎麼改動過,就把它忽略了。既然這樣,那就白紙黑字記下來吧,以免下次腦袋抽風。首先,base6...
base64加密原理
以加密字串 hkmayfly 為例子 將待加密字串的每個字元轉換為對應ascii碼的二進位制形式並拓展為8位。每3個字元為一組,共24位,每6位劃分為一組,不足6位在末尾添0,並轉換為對應的十進位制。不足3個字元,最後取字元時,用 代替 這裡問號可以忽略,只是為了方便理解 將base64的值對照索引...