2019獨角獸企業重金招聘Python工程師標準>>>
不了解的人突然看到window對象的atob和btoa 函數,估計會認為哪個臭小子添加全局函數了。
你如果告訴他這是原生函數,他一定會怒罵:哪個腦殘給api起個這樣的名子。
你能猜出來這兩個函數是干什么的嗎?
實驗一下:
直觀看有這幾點:
- “123” 經過??atob 變短了,? 結過btoa 變長了 。
- 先atob 后btoa,字符變了?。 但是先btoa,后atob,字符不變。
奇怪嗎,根本不奇怪,解釋一下它們的用途就明白了。
引用MDN:
Base64是一組相似的二進制到文本(binary-to-text)的編碼規則,使得二進制數據在解釋成radix-64的表現形式后能夠用ASCII字符串的格式表示出來。
atob()
?函數能夠解碼通過base-64編碼的字符串數據。相反地,btoa()
?函數能夠從字符串或二進制數據創建一個base-64編碼的ASCII字符串。
簡單一句:Base64編碼將數據轉為“安全字符”用于傳輸,編碼會使內容變長1/3!
btoa就是進行Base64編碼,atob是解碼。
有問題就是:它不支持Utf-8中的所有字符,會有異常。解決方案:
https://developer.mozilla.org/zh-CN/docs/Web/API/WindowBase64/Base64_encoding_and_decoding
但我試驗更簡單的是:
unescape(atob( // 解碼btoa( escape( "12中國? à la mode")) // 編碼) )
?
我現在決定在項目里,用它們來加密,解密存入localStorage中的字符串了。
安全嗎 ?知道了肯定不安全,但只要別人看一眼是亂碼就OK了。