1. 程式人生 > >經過Base64加密後字元的長度變化

經過Base64加密後字元的長度變化

Base64加密後字元長度變化

問題:文字中包含了emoji表情,公司資料庫版本較老,utf-8無法儲存emoji這種四個位元組的字元。所以解決方案是將文字轉換成base64後存入。mysql要對欄位長度進行限制,需要知道原文字長度與base64加密後文本長度的比例。

所謂Base64,就是說選出64個字元—-小寫字母a-z、大寫字母A-Z、數字0-9、符號”+”、”/”作為基本基礎集的編碼方式。

base64加密原理:
①將每三個位元組作為一組,一共是24個二進位制位。
②將這24個二進位制位分為四小組,每個小組有6個二進位制位。
③在每小組前面加兩個00,擴充套件成32個二進位制位,即四個位元組。
④根據base64基礎表,得到擴充套件後的每個位元組的對應的base64符號。

UTF-8編碼下的中/日/韓文佔了3/4個位元組
佔四個位元組是最長的情況:1 : 8
1箇中文字元 –》 4個位元組 –》 每三個位元組分為一組,則分成兩組,共6個位元組 –》 擴充套件,得到8個位元組 –》 將8個位元組轉換成8個base64字元。

畢竟四個位元組佔少數,三個位元組情況下是:1 : 4
1箇中文字元 –》 3個位元組 –》 每三個位元組分為一組,則分成一組,共3個位元組 –》 擴充套件,得到4個位元組 –》 將4個位元組轉換成4個base64字元。

所以加密後的字元長度為原長度的4~8倍。這邊暫時取值4.5倍