今天跟后臺對接一個接口住涉,接受到一個加密的值堕汞,說是通過gzip加密玛追,前端解碼展示
下載poko.js
poko.js可至Github下載?https://github.com/nodeca/pako?
or
npm install pako
import?pako?from?'pako'
// 一個是加密:window.btoa()披诗,一個是解密:window.atob()
function decode(encodedData) {
?// 先 base64編碼
?// 加密:window.btoa(),解密:window.atob()
?let decodedData = window.atob(encodedData);
?// 字符串轉(zhuǎn)數(shù)組 在循環(huán)返回一個 Unicode表所在位置的新數(shù)組
?let charData = decodedData.split("").map(x => x.charCodeAt(0));
?// Uint8Array 數(shù)組類型表示一個8位無符號整型數(shù)組宰缤,創(chuàng)建時內(nèi)容被初始化為0颂翼。創(chuàng)建完后晃洒,可以以對象的方式或使用數(shù)組下標(biāo)索引的方式引用數(shù)組中的元素。
?let binData = newUint8Array(charData);
?// 調(diào)用pako 解析
?let data = pako.inflate(binData);
?//接受 Unicode 值朦乏,然后返回字符串球及。
?decodedData = String.fromCharCode.apply(null,?new?Uint16Array(data));
?return? ?decodeURIComponent(escape(decodedData))
?/**
?* 演示:H4sIAAAAAAAAAFWPXQ6AIAyDL2QMavfD/S+m3bIhL1862hVQO8ehAf9gg7g4PmUABM8gDRoyegxX iUljjdhUboRivUipbPEKy0Lk4jbUvYiNrkpIG2ilrXx3vR/pWy5+nrgJlhojzjUjdP5zL5Sz+lo/ AQAA
?*
?*/
}
注:decodeURIComponent(decodedData)? 解析還是會有亂碼 經(jīng)查找資料更改為?decodeURIComponent(escape(decodedData))
functionutf8_to_b64(str){
returnwindow.btoa(unescape(encodeURIComponent(str)));
}
functionb64_to_utf8(str){
returndecodeURIComponent(escape(window.atob(str)));
}
資料借鑒:https://blog.csdn.net/abxn2002/article/details/50887594