BASE64加密整理整理

2021-08-31 20:45:37 字數 2194 閱讀 3511

beforeencode為encode之前的字串

那麼encode後的字串長度為:

1、如果beforeencode.length()是3的整數倍,那麼長度為

(beforeencode.length()/3)*4

2、如果beforeencode.length()不是3的整數倍,那麼長度為

(beforeencode.length()/3+1)*4

為什麼是這個樣子呢,原理如下:

首先,base64編碼的原理是先將原始檔以標準位元組(byte)為單位轉化成二進位制,乙個位元組佔8個位(bit),如「abc」的二進位制是01000001、01000010、01000011,這樣原始檔就形成了每8個bit一組的一串二進位制,然後將這些二進位制串以base64特有的規則(每個位元組佔6個位)再轉化成base64格式的字元(如下圖),編碼完成。解碼就是這個過程反過來。

base64 編碼表

value    char         value    char         value    char         value    char

0    a    16    q    32    g    48    w

1    b    17    r    33    h    49    x

2    c    18    s    34    i    50    y

3    d    19    t    35    j    51    z

4    e    20    u    36    k    52    0

5    f    21    v    37    l    53    1

6    g    22    w    38    m    54    2

7    h    23    x    39    n    55    3

8    i    24    y    40    o    56    4

9    j    25    z    41    p    57    5

10    k    26    a    42    q    58    6

11    l    27    b    43    r    59    7

12    m    28    c    44    s    60    8

13    n    29    d    45    t    61    9

14    o    30    e    46    u    62    +

15    p    31    f    47    v    63    /

"abc"的轉化為base64字元的邏輯如下:

a                      b                 c

ascii十進位制                          65                      66                67

8bit/byte                           01000001       01000010     01000011

6bit/byte                           010000    010100    001001    000011

base64十進位制                       16            20           9              3

base64字元                            q             u            j              d

這樣,"abc"三個標準字元就轉化成了"qujd"四個base64字元。

明眼人就會發現,base64編碼以後位元組數會增加,事實上也確實如此,因為原先8個佔位的位元組轉化成了6個佔位的位元組,每3個原先的位元組就轉化成了4個base64位元組。這算是base64編碼的乙個***吧。先忽略這個,講重點。

現在問題來了,既然編碼和解碼的規律是固定的大家都知道,那還怎麼起到加密的作用呢?

這種編碼的方式有個特點,就是解碼的時候要麼從最前面的位元組往後推,要麼從最後的位元組往前推,最前面和最後面的位元組可以直接影響到全部的解碼結果。跟多公尺諾骨牌一樣,乙個錯誤,後面都會跟著錯誤。

既然這樣,我們在原始檔的最前面和最後面分別加上乙個簡單的字元,那解碼出來的檔案內容就跟原始檔相差了十萬八千里,因為第乙個不對,那以此類推,後面的解碼都會錯誤。

Base64加密解密

public class base64 對應asicc字元的位置 public static string base64encode string str c2 str i if i len c3 str i out base64encodechars c1 2 out base64encodech...

base64加密 例子

12349 50 51 31 32 33 00110001 00110010 00110011 001100 010011 001000 110011 00001100 00010011 00001000 00110011 12 19 8 51 mtiz base64編碼說明 base64編碼要求把...

Base64 加密 解密

1 原理 轉碼過程例子 3 8 4 6 記憶體1個字元佔8位 轉前 s 1 3 先轉成ascii 對應 115 49 51 2進製 01110011 00110001 00110011 6個一組 4組 011100110011000100110011 然後才有後面的 011100 110011 00...