文章目录
1 介绍
本文将使用 js-base64 进行js base64相关操作
2 安装
npm
npm install --save js-base64
cdn
<script src="https://cdn.jsdelivr.net/npm/js-base64@3.7.2/base64.min.js"></script>
3 base64加密/解密案例
加密、解密具体方法如下案例所示
let nick = "有勇气的牛排good"
Base64.extendString();
console.log(nick.toBase64())
console.log(nick.toBase64(true))
console.log(nick.toBase64URI())
console.log(nick.toBase64URL())
console.log(nick.toBase64().fromBase64())
console.log(nick.toBase64(true).fromBase64())
console.log(nick.toBase64URI().fromBase64())
console.log(nick.toBase64URL().toUint8Array())

4 decode与atob
Base64.decode()
:解码为 UTF-8字符串
Base64.atob()
:解码为字节
5 jwt解析操作实战
function jwt_parse(token) {
return Base64.atob(token.split(".")[1]);
}
let token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJcdTY3MDlcdTUyYzdcdTZjMTRcdTc2ODRcdTcyNWJcdTYzOTIiLCJpYXQiOjE2Njc0NTg5ODAsImV4cCI6MTY2ODA2Mzc4MCwiYXVkIjoid3d3LmNvdXJhZ2VzdGVhay5jb20iLCJkYXRhIjp7InVpZCI6MSwidXNlcm5hbWUiOiJjaGVhcmxlcyJ9fQ.4Xrf3Chpfu1qOnmDy7UQqJAt6dpvKBVxafvr7gdCwdk";
let userinfo = jwt_parse(token)
console.log(userinfo)
结果
{
"iss": "有勇气的牛排",
"iat": 1667458980,
"exp": 1668063780,
"aud": "www.couragesteak.com",
"data": {
"uid": 1,
"username": "charles"
}
}
<p><h3>文章目录</h3><ul><ul><li><a href="#1__1">1 介绍</a></li><li><a href="#2__4">2 安装</a></li><li><a href="#3_base64_15">3 base64加密/解密案例</a></li><li><a href="#4_decodeatob_38">4 decode与atob</a></li><li><a href="#5_jwt_42">5 jwt解析操作实战</a></li></ul></ul></p>
<h2><a id="1__1"></a>1 介绍</h2>
<p>本文将使用 <a href="https://github.com/dankogai/js-base64" target="_blank">js-base64</a> 进行js base64相关操作</p>
<h2><a id="2__4"></a>2 安装</h2>
<p>npm</p>
<pre><div class="hljs"><code class="lang-powershell">npm install <span class="hljs-literal">--save</span> js<span class="hljs-literal">-base64</span>
</code></div></pre>
<p>cdn</p>
<pre><div class="hljs"><code class="lang-powershell"><script src=<span class="hljs-string">"https://cdn.jsdelivr.net/npm/js-base64@3.7.2/base64.min.js"</span>></script>
</code></div></pre>
<h2><a id="3_base64_15"></a>3 base64加密/解密案例</h2>
<p>加密、解密具体方法如下案例所示</p>
<pre><div class="hljs"><code class="lang-javascript"><span class="hljs-keyword">let</span> nick = <span class="hljs-string">"有勇气的牛排good"</span>
<span class="hljs-comment">// 显式扩展</span>
<span class="hljs-title class_">Base64</span>.<span class="hljs-title function_">extendString</span>();
<span class="hljs-comment">// 加密</span>
<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(nick.<span class="hljs-title function_">toBase64</span>()) <span class="hljs-comment">// 5pyJ5YuH5rCU55qE54mb5o6SZ29vZA==</span>
<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(nick.<span class="hljs-title function_">toBase64</span>(<span class="hljs-literal">true</span>)) <span class="hljs-comment">// 5pyJ5YuH5rCU55qE54mb5o6SZ29vZA</span>
<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(nick.<span class="hljs-title function_">toBase64URI</span>()) <span class="hljs-comment">// 5pyJ5YuH5rCU55qE54mb5o6SZ29vZA</span>
<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(nick.<span class="hljs-title function_">toBase64URL</span>()) <span class="hljs-comment">// 5pyJ5YuH5rCU55qE54mb5o6SZ29vZA</span>
<span class="hljs-comment">// 解密</span>
<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(nick.<span class="hljs-title function_">toBase64</span>().<span class="hljs-title function_">fromBase64</span>()) <span class="hljs-comment">// 有勇气的牛排good</span>
<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(nick.<span class="hljs-title function_">toBase64</span>(<span class="hljs-literal">true</span>).<span class="hljs-title function_">fromBase64</span>()) <span class="hljs-comment">// 有勇气的牛排good</span>
<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(nick.<span class="hljs-title function_">toBase64URI</span>().<span class="hljs-title function_">fromBase64</span>()) <span class="hljs-comment">// 有勇气的牛排good</span>
<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(nick.<span class="hljs-title function_">toBase64URL</span>().<span class="hljs-title function_">toUint8Array</span>())
<span class="hljs-comment">// Uint8Array(22) [230, 156, 137, 229, 139, 135, 230, 176, 148, 231, 154, 132, 231, 137, 155, 230, 142, 146, 103, 111, 111, 100, buffer: ArrayBuffer(22), byteLength: 22, byteOffset: 0, length: 22, Symbol(Symbol.toStringTag): 'Uint8Array']</span>
</code></div></pre>
<p><img src="https://static.couragesteak.com/article/bfc2de1af1cfe68de1d497081d624233.png" alt="image.png" /></p>
<h2><a id="4_decodeatob_38"></a>4 decode与atob</h2>
<p><code>Base64.decode() </code>:解码为 UTF-8字符串<br />
<code>Base64.atob()</code>:解码为字节</p>
<h2><a id="5_jwt_42"></a>5 jwt解析操作实战</h2>
<pre><div class="hljs"><code class="lang-javascript"><span class="hljs-keyword">function</span> <span class="hljs-title function_">jwt_parse</span>(<span class="hljs-params">token</span>) {
<span class="hljs-keyword">return</span> <span class="hljs-title class_">Base64</span>.<span class="hljs-title function_">atob</span>(token.<span class="hljs-title function_">split</span>(<span class="hljs-string">"."</span>)[<span class="hljs-number">1</span>]);
}
<span class="hljs-keyword">let</span> token = <span class="hljs-string">"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJcdTY3MDlcdTUyYzdcdTZjMTRcdTc2ODRcdTcyNWJcdTYzOTIiLCJpYXQiOjE2Njc0NTg5ODAsImV4cCI6MTY2ODA2Mzc4MCwiYXVkIjoid3d3LmNvdXJhZ2VzdGVhay5jb20iLCJkYXRhIjp7InVpZCI6MSwidXNlcm5hbWUiOiJjaGVhcmxlcyJ9fQ.4Xrf3Chpfu1qOnmDy7UQqJAt6dpvKBVxafvr7gdCwdk"</span>;
<span class="hljs-keyword">let</span> userinfo = <span class="hljs-title function_">jwt_parse</span>(token)
<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(userinfo)
</code></div></pre>
<p>结果</p>
<pre><div class="hljs"><code class="lang-json"><span class="hljs-punctuation">{</span>
<span class="hljs-attr">"iss"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"有勇气的牛排"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"iat"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">1667458980</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"exp"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">1668063780</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"aud"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"www.couragesteak.com"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"data"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">{</span>
<span class="hljs-attr">"uid"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">1</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"username"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"charles"</span>
<span class="hljs-punctuation">}</span>
<span class="hljs-punctuation">}</span>
</code></div></pre>
留言