Base64是一種編碼方式,可以將二進制數據轉換成可打印的字符。由于某些應用場景中,需要向網絡傳輸二進制數據,但因為某些協議限制只能傳輸ASCII字符,所以需要把二進制數據編碼成ASCII字符。比如在發送郵件時,可能需要發送二進制數據作為郵件附件,但郵件協議只支持ASCII字符,此時就需要用到Base64編碼。在網絡傳輸中,前端發送和后端接收的數據格式一般是JSON格式,在數據傳輸的過程中,有些數據可能被加密過,此時在前端需要進行Base64解密。
//Base64解密函數 function decodeBase64(str) { var base64table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var result = ""; var digitNum, curDigit; for (var i = 0; i< str.length; i += 4) { digitNum = base64table.indexOf(str.charAt(i+2)); curDigit = (base64table.indexOf(str.charAt(i))<< 18) | (base64table.indexOf(str.charAt(i+1))<< 12) | (digitNum<< 6) | base64table.indexOf(str.charAt(i+3)); result += String.fromCharCode(curDigit >>16, (curDigit >>8) & 0xff, curDigit & 0xff); } if (digitNum == 63) { //padding return result.substring(0, result.length - 2); } else if (digitNum == 62) { return result.substring(0, result.length - 1); } else { return result; } }
在解密JSON的時候,需要先將接收到的Base64字符串解碼成字節數組,再使用JSON.parse()方法將字節數組轉換成JSON對象。
//Base64解密及JSON解析函數 function decodeJson(jsonStr) { var byteArr = atob(jsonStr).split("").map(function(c) { return c.charCodeAt(0); }); var json = JSON.parse(String.fromCharCode.apply(String, byteArr)); return json; }
在使用上述代碼時,只需要調用decodeJson函數即可將Base64加密的JSON字符串解密成JSON對象。
上一篇css 靠左靠右對齊
下一篇html 顯示圖片的代碼