近期接觸AI圖片識(shí)別,圖片轉(zhuǎn)碼,從而接觸到
base64
編碼原理。為后續(xù)實(shí)現(xiàn)此編碼原理,先學(xué)習(xí)了解~
base64編碼
base64
是一種編碼方式。
選出64個(gè)符號(hào)作為基礎(chǔ)字符集,將其他字符都轉(zhuǎn)換成這個(gè)字符集的內(nèi)容,包括A~Z a~z 0~9 + /
共64個(gè),但偶爾用'='補(bǔ)位,所以實(shí)際上是65個(gè)。
base64對(duì)應(yīng)關(guān)系表
0 A 15 P 30 e 45 t 60 8
1 B 16 Q 31 f 46 u 61 9
2 C 17 R 32 g 47 v 62 +
3 D 18 S 33 h 48 w 63 /
4 E 19 T 34 i 49 x
5 F 20 U 35 j 50 y
6 G 21 V 36 k 51 z
7 H 22 W 37 l 52 0
8 I 23 X 38 m 53 1
9 J 24 Y 39 n 54 2
10 K 25 Z 40 o 55 3
11 L 26 a 41 p 56 4
12 M 27 b 42 q 57 5
13 N 28 c 43 r 58 6
14 O 29 d 44 s 59 7
轉(zhuǎn)換步驟
1 三個(gè)字節(jié)為一組,一個(gè)字節(jié)為8位2進(jìn)制,共24個(gè)二進(jìn)制位
2 將24個(gè)二進(jìn)制位分為四組,每組6個(gè)二進(jìn)制位
3 在每組的頭部,補(bǔ)充00,變?yōu)?組8個(gè)二進(jìn)制位
4 根據(jù)對(duì)應(yīng)表格,拿到擴(kuò)展后的字符
轉(zhuǎn)換列子 Key
(新手畫(huà)表 懂的大佬評(píng)論指導(dǎo)一哈吧)
原始字符 | K | e | y | |
---|---|---|---|---|
ASCII | 75 | 101 | 121 | |
二進(jìn)制 | 0100 1011 | 0110 0101 | 0111 1001 | |
分割 | 010010 | 110110 | 010101 | 111001 |
補(bǔ)位 | 00010010 | 00110110 | 00010101 | 00111001 |
轉(zhuǎn)10進(jìn)制 | 18 | 54 | 21 | 57 |
表對(duì)應(yīng) | S | 2 | V | 5 |
Linux
語(yǔ)句獲得字符ASCII碼值
[root@localhost moic_a] echo K | tr -d "\n" | od -An -t dC
75
Linux
命令轉(zhuǎn)換base64 (Cg==是換行)
[root@localhost moic_a] echo "Key" | base64
S2V5Cg==
當(dāng)為兩個(gè)字節(jié)時(shí),將16位二進(jìn)制按6.6.4分開(kāi),前兩組前加00,第三組前后加00,最后第四位用 '=' 補(bǔ)位
原始字符 | K | e | ||
---|---|---|---|---|
ASCII | 75 | 101 | ||
二進(jìn)制 | 0100 1011 | 0110 0101 | ||
分割 | 010010 | 110110 | 0101 | |
補(bǔ)位 | 00010010 | 00110110 | 00010100 | |
轉(zhuǎn)10進(jìn)制 | 18 | 54 | 20 | = |
表對(duì)應(yīng) | S | 2 | U | = |
[root@localhost moic_a] echo "Ke" | base64
S2UK
當(dāng)為一個(gè)字節(jié)時(shí),將8位二進(jìn)制按6.2分開(kāi),第一組前面加00,第二組前面加00,后面加0000
原始字符 | K | |||
---|---|---|---|---|
ASCII | 75 | |||
二進(jìn)制 | 0100 1011 | |||
分割 | 010010 | 11 | ||
補(bǔ)位 | 00010010 | 00110000 | ||
轉(zhuǎn)10進(jìn)制 | 18 | 48 | = | = |
表對(duì)應(yīng) | S | w | = | = |
[root@localhost moic_a] echo "K" | base64
Swo=
Linux轉(zhuǎn)換和在線轉(zhuǎn)換結(jié)果不一致
因?yàn)閎ase64編轉(zhuǎn)碼有不同的包可實(shí)現(xiàn),包內(nèi)部算法不同會(huì)造成轉(zhuǎn)換結(jié)果不一致,所以在url加密時(shí),盡量不要用base64。
base64 在線轉(zhuǎn)換驗(yàn)證
阮一峰大佬博客base64文章鏈接