国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁(yè) > 網(wǎng)易號(hào) > 正文 申請(qǐng)入駐

谷歌把3字節(jié)變成4字符的算法,程序員用了30年還沒(méi)換

0
分享至


Base64編碼每天在互聯(lián)網(wǎng)上傳輸數(shù)十億次,卻極少有人停下來(lái)問(wèn):為什么偏偏是64個(gè)字符?為什么3字節(jié)非要拆成4個(gè)字符?這個(gè)1978年誕生的算法,至今仍在你的JWT令牌、郵件附件、CSS內(nèi)嵌圖片里默默運(yùn)轉(zhuǎn)。

本文用一組具體數(shù)字拆解它的工作原理,以及開(kāi)發(fā)者最常踩的5個(gè)坑。

從24比特到4個(gè)字符:一個(gè)刻意的設(shè)計(jì)

Base64的核心操作極其機(jī)械:每3字節(jié)(24比特)輸入,切成4個(gè)6比特組,每組映射到64個(gè)可打印字符之一。64個(gè)字符剛好是A-Z、a-z、0-9,加上+和/,再用=做補(bǔ)位填充。

這個(gè)設(shè)計(jì)的代價(jià)很明確:編碼后體積膨脹33%。3字節(jié)變4字符,沒(méi)有壓縮,沒(méi)有加密,只是為了讓二進(jìn)制數(shù)據(jù)能安全穿過(guò)只認(rèn)文本的系統(tǒng)——1980年代的電子郵件、HTTP頭、URL參數(shù)、JSON字段。

輸入"Man"的完整過(guò)程:二進(jìn)制是01001101 01100001 01101110,切成010011、010110、000101、101110四組,對(duì)應(yīng)Base64字符T、W、F、u。沒(méi)有魔法,只有位運(yùn)算。


5個(gè)真實(shí)使用場(chǎng)景,以及它們的隱藏成本

場(chǎng)景一:HTML/CSS內(nèi)嵌圖片。把小圖標(biāo)轉(zhuǎn)成Data URL可以省掉一次HTTP請(qǐng)求,但Base64字符串會(huì)讓圖片體積膨脹約33%。Google的PageSpeed Insights明確建議:超過(guò)2KB的圖片就別內(nèi)嵌了,省下的請(qǐng)求時(shí)間抵不上傳輸膨脹。

場(chǎng)景二:HTTP Basic認(rèn)證。Authorization頭里的Basic dXNlcjpwYXNzd29yZA==看著像加密,實(shí)則是user:password的明文轉(zhuǎn)碼。RFC 7617文檔強(qiáng)調(diào):沒(méi)有HTTPS時(shí),這種編碼"不提供任何機(jī)密性保護(hù)"。

場(chǎng)景三:JWT令牌結(jié)構(gòu)。一個(gè)標(biāo)準(zhǔn)JWT是三段Base64url編碼用點(diǎn)號(hào)連接:頭部、載荷、簽名。中間那段payload解碼后就是JSON明文,包含用戶ID和權(quán)限。很多人誤以為JWT加密了數(shù)據(jù),其實(shí)它只是簽名防篡改,內(nèi)容對(duì)任何能拿到令牌的人都是透明的。

場(chǎng)景四:JSON傳二進(jìn)制文件。API返回PDF或圖片時(shí),常見(jiàn)這種結(jié)構(gòu):

{ "filename": "invoice.pdf", "content": "JVBERi0xLjQKJeLjz9MKMSAwIG9iag..." }


content字段就是Base64編碼的文件內(nèi)容。這是MIME(多用途互聯(lián)網(wǎng)郵件擴(kuò)展)標(biāo)準(zhǔn)的遺產(chǎn),從1992年的電子郵件附件延續(xù)至今。

場(chǎng)景五:數(shù)據(jù)庫(kù)存二進(jìn)制。Redis字符串類型、部分NoSQL系統(tǒng)用Base64存證書或密鑰。代價(jià)是存儲(chǔ)空間和讀寫時(shí)的編解碼CPU開(kāi)銷,但換來(lái)了跨系統(tǒng)文本傳輸?shù)募嫒菪浴?/p>

開(kāi)發(fā)者最常踩的3個(gè)坑

坑一:把編碼當(dāng)加密。Base64的解碼不需要密鑰,瀏覽器控制臺(tái)輸入atob("dGVzdA==")就能還原。見(jiàn)過(guò)把用戶密碼Base64存數(shù)據(jù)庫(kù)的案例,這等于明文存儲(chǔ)。

坑二:URL安全版本混淆。標(biāo)準(zhǔn)Base64含+和/,在URL里會(huì)被轉(zhuǎn)義成%2B和%2F,增加長(zhǎng)度。JWT用的是Base64url變體,把+換成-、/換成_、去掉=填充。混用兩者會(huì)導(dǎo)致簽名驗(yàn)證失敗。

坑三:忽略體積膨脹。把1MB圖片Base64編碼塞進(jìn)JSON,實(shí)際傳輸1.33MB。移動(dòng)端弱網(wǎng)環(huán)境下,這33%的額外流量可能直接拖垮體驗(yàn)。

JavaScript和Python的調(diào)用方式足夠簡(jiǎn)單:前者用btoa()/atob()或Buffer.from(str).toString('base64'),后者用base64.b64encode()。但工具順手不代表理解到位——知道什么時(shí)候不該用,比知道怎么用更重要。

這個(gè)48年前的算法至今沒(méi)有退役跡象。當(dāng)你下次復(fù)制一段JWT令牌到解碼網(wǎng)站時(shí),不妨想想:如果當(dāng)年電子郵件系統(tǒng)能直接傳二進(jìn)制,我們今天會(huì)用什么?

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點(diǎn)推薦
越挖越多!張雪峰離世早有征兆,他的2個(gè)不良嗜好,或成催命符

越挖越多!張雪峰離世早有征兆,他的2個(gè)不良嗜好,或成催命符

爆笑大聰明阿衿
2026-03-25 23:04:10
形勢(shì)變了,歐洲芯片巨頭突然宣布:我在中國(guó)造芯成功了!

形勢(shì)變了,歐洲芯片巨頭突然宣布:我在中國(guó)造芯成功了!

科技專家
2026-03-25 13:00:22
內(nèi)幕曝光:10名主力被抽走,U23國(guó)足被逼到絕境,他卻笑了!

內(nèi)幕曝光:10名主力被抽走,U23國(guó)足被逼到絕境,他卻笑了!

體育熱點(diǎn)看臺(tái)
2026-03-26 10:02:01
朋友曝張雪峰追悼會(huì)3月28日舉行,曬出與他最后聊天截圖,淚目了

朋友曝張雪峰追悼會(huì)3月28日舉行,曬出與他最后聊天截圖,淚目了

老黯談娛
2026-03-25 22:08:05
命中率47%,周琦的罰球?yàn)楹螖嘌率较禄??懶才是最大的“病因?>
    </a>
        <h3>
      <a href=中國(guó)足球的那些事兒
2026-03-25 16:22:15
不老小鋼炮!40歲洛瑞生日夜替補(bǔ)登場(chǎng),20秒致命三分點(diǎn)燃全場(chǎng)

不老小鋼炮!40歲洛瑞生日夜替補(bǔ)登場(chǎng),20秒致命三分點(diǎn)燃全場(chǎng)

仰臥撐FTUer
2026-03-26 11:11:02
【長(zhǎng)三角日?qǐng)?bào)】江蘇省省長(zhǎng)乘坐地鐵前往機(jī)場(chǎng)調(diào)研,全流程體驗(yàn)出行過(guò)程

【長(zhǎng)三角日?qǐng)?bào)】江蘇省省長(zhǎng)乘坐地鐵前往機(jī)場(chǎng)調(diào)研,全流程體驗(yàn)出行過(guò)程

上觀新聞
2026-03-25 22:06:07
9中9轟20+9+5!楊瀚森付出一切遭庫(kù)克坑苦 G聯(lián)賽首次百分百命中率

9中9轟20+9+5!楊瀚森付出一切遭庫(kù)克坑苦 G聯(lián)賽首次百分百命中率

顏小白的籃球夢(mèng)
2026-03-26 10:15:13
倒計(jì)時(shí)開(kāi)始!特朗普將迎來(lái)終極翻車時(shí)刻!

倒計(jì)時(shí)開(kāi)始!特朗普將迎來(lái)終極翻車時(shí)刻!

一個(gè)壞土豆
2026-03-25 20:56:19
拒絕修改!蕭華正式回應(yīng)65場(chǎng)評(píng)獎(jiǎng)規(guī)則:我認(rèn)為它是有效的

拒絕修改!蕭華正式回應(yīng)65場(chǎng)評(píng)獎(jiǎng)規(guī)則:我認(rèn)為它是有效的

羅說(shuō)NBA
2026-03-26 07:22:21
伊朗愿意與“主和派”萬(wàn)斯談!特朗普一邊宣稱勝利一邊增兵中東:我和魯比奧也要參與

伊朗愿意與“主和派”萬(wàn)斯談!特朗普一邊宣稱勝利一邊增兵中東:我和魯比奧也要參與

紅星新聞
2026-03-25 17:17:14
時(shí)隔七年,捷克再爆抗議,25萬(wàn)民眾怒吼:拒絕成為下一個(gè)匈牙利

時(shí)隔七年,捷克再爆抗議,25萬(wàn)民眾怒吼:拒絕成為下一個(gè)匈牙利

滄海旅行家
2026-03-25 13:18:10
美國(guó)最大的失誤就是一上來(lái)就把宋江給干掉了

美國(guó)最大的失誤就是一上來(lái)就把宋江給干掉了

仰望星空的一粒沙子
2026-03-14 16:25:14
歐盟威脅越南:若中方參與了…

歐盟威脅越南:若中方參與了…

觀察者網(wǎng)
2026-03-25 15:19:16
中國(guó)最有名的9條家訓(xùn),讀懂一條旺家三代,建議收藏反復(fù)背誦

中國(guó)最有名的9條家訓(xùn),讀懂一條旺家三代,建議收藏反復(fù)背誦

長(zhǎng)風(fēng)文史
2026-03-25 17:58:23
笑掉大牙!伊朗高層當(dāng)眾互撕,吹破天的強(qiáng)硬,連軍餉都發(fā)不出來(lái)

笑掉大牙!伊朗高層當(dāng)眾互撕,吹破天的強(qiáng)硬,連軍餉都發(fā)不出來(lái)

老馬拉車莫少裝
2026-03-25 19:39:00
79元太火!小米磁吸玩偶賣斷貨 官方承諾加快生產(chǎn)

79元太火!小米磁吸玩偶賣斷貨 官方承諾加快生產(chǎn)

快科技
2026-03-26 07:09:03
霸權(quán)還沒(méi)崩,青樓先崩了:拉千萬(wàn)歐美女孩下海的大佬暴斃

霸權(quán)還沒(méi)崩,青樓先崩了:拉千萬(wàn)歐美女孩下海的大佬暴斃

美第奇效應(yīng)
2026-03-24 16:51:33
張雪峰去世后續(xù),二婚妻子發(fā)聲緬懷,兩人結(jié)婚證被扒!

張雪峰去世后續(xù),二婚妻子發(fā)聲緬懷,兩人結(jié)婚證被扒!

古希臘掌管松餅的神
2026-03-25 10:02:28
中國(guó)腦梗人數(shù)全球第一:肉吃得越少,血管就越通,真的嗎?

中國(guó)腦梗人數(shù)全球第一:肉吃得越少,血管就越通,真的嗎?

蜉蝣說(shuō)
2026-03-24 10:00:57
2026-03-26 11:23:00
Ping值焦慮
Ping值焦慮
有態(tài)度網(wǎng)友ytd
47文章數(shù) 1關(guān)注度
往期回顧 全部

科技要聞

硅谷因AI大裁員?一線工程師戳破真相

頭條要聞

上海36歲女子嫁23歲小伙 拿千萬(wàn)元房產(chǎn)99%份額"閃離"

頭條要聞

上海36歲女子嫁23歲小伙 拿千萬(wàn)元房產(chǎn)99%份額"閃離"

體育要聞

35歲替補(bǔ)門將,憑什么入選英格蘭隊(duì)?

娛樂(lè)要聞

張雪峰遺產(chǎn)分割復(fù)雜!是否立遺囑成關(guān)鍵

財(cái)經(jīng)要聞

黃仁勛:芯片公司的時(shí)代已經(jīng)結(jié)束了

汽車要聞

一汽奧迪A6L e-tron開(kāi)啟預(yù)售 CLTC最大續(xù)航815km

態(tài)度原創(chuàng)

游戲
親子
藝術(shù)
教育
軍事航空

這能IGN 8分?卡普空經(jīng)典大作重制后口碑竟然暴漲

親子要聞

科普|兒童能不能使用阿片類藥物——專業(yè)解讀家長(zhǎng)最怕的“止痛藥”

藝術(shù)要聞

哪一座橋不是風(fēng)景?

教育要聞

ISAR選修課丨重磅古典占星預(yù)測(cè)課程:整合6大預(yù)測(cè)技法,從入門到實(shí)戰(zhàn)

軍事要聞

伊朗重申非交戰(zhàn)國(guó)家船只可安全通過(guò)霍爾木茲海峽

無(wú)障礙瀏覽 進(jìn)入關(guān)懷版