atob和btoa的趣谈
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
不了解的人突然看到window對象的atob和btoa 函數(shù),估計(jì)會(huì)認(rèn)為哪個(gè)臭小子添加全局函數(shù)了。
你如果告訴他這是原生函數(shù),他一定會(huì)怒罵:哪個(gè)腦殘給api起個(gè)這樣的名子。
你能猜出來這兩個(gè)函數(shù)是干什么的嗎?
實(shí)驗(yàn)一下:
直觀看有這幾點(diǎn):
奇怪嗎,根本不奇怪,解釋一下它們的用途就明白了。
引用MDN:
Base64是一組相似的二進(jìn)制到文本(binary-to-text)的編碼規(guī)則,使得二進(jìn)制數(shù)據(jù)在解釋成radix-64的表現(xiàn)形式后能夠用ASCII字符串的格式表示出來。
atob()?函數(shù)能夠解碼通過base-64編碼的字符串?dāng)?shù)據(jù)。相反地,btoa()?函數(shù)能夠從字符串或二進(jìn)制數(shù)據(jù)創(chuàng)建一個(gè)base-64編碼的ASCII字符串。
簡單一句:Base64編碼將數(shù)據(jù)轉(zhuǎn)為“安全字符”用于傳輸,編碼會(huì)使內(nèi)容變長1/3!
btoa就是進(jìn)行Base64編碼,atob是解碼。
有問題就是:它不支持Utf-8中的所有字符,會(huì)有異常。解決方案:
https://developer.mozilla.org/zh-CN/docs/Web/API/WindowBase64/Base64_encoding_and_decoding
但我試驗(yàn)更簡單的是:
unescape(atob( // 解碼btoa( escape( "12中國? à la mode")) // 編碼) )?
我現(xiàn)在決定在項(xiàng)目里,用它們來加密,解密存入localStorage中的字符串了。
安全嗎 ?知道了肯定不安全,但只要?jiǎng)e人看一眼是亂碼就OK了。
轉(zhuǎn)載于:https://my.oschina.net/u/1540190/blog/2962232
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的atob和btoa的趣谈的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 你的GitHub,怎么和我用的不太一样?
- 下一篇: gearhost php,Gearhos
