不瞭解的人忽然看到window對象的atob和btoa 函數,估計會認爲哪一個臭小子添加全局函數了。javascript
你若是告訴他這是原生函數,他必定會怒罵:哪一個腦殘給api起個這樣的名子。java
你能猜出來這兩個函數是幹什麼的嗎?api
實驗一下:安全
直觀看有這幾點:函數
奇怪嗎,根本不奇怪,解釋一下它們的用途就明白了。編碼
引用MDN:加密
Base64是一組類似的二進制到文本(binary-to-text)的編碼規則,使得二進制數據在解釋成radix-64的表現形式後可以用ASCII字符串的格式表示出來。code
atob()
函數可以解碼經過base-64編碼的字符串數據。相反地,btoa()
函數可以從字符串或二進制數據建立一個base-64編碼的ASCII字符串。對象
簡單一句:Base64編碼將數據轉爲「安全字符」用於傳輸,編碼會使內容變長1/3!blog
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了。