CryptoJS 用前端加密、解密

本篇要解決的問題



一般來說,加密解密這件事兒都是要讓後端來處理,因為前端寫的程式碼全部都會是明碼,加解密的密碼會大辣辣徣下所有.

하지만! 對,就是這個 그러나! 」跟寫「U2Fs+7ZUKvqr+7C=」之類的就是不一樣.

而且 而且 不 也 也 所有 工程師 看到 別人 的 的 頁面 頁面 就 會 去 去 無聊 無聊 翻 翻 翻 쿠키 跟 跟 跟 js 檔 去 解密 吧?? 加上 敢 敢 存在 前端 前端 的 資訊 資訊 不 會 是 是 什麼 重要 了 了 所以 前端 的 的 加 、 解密 就 就 還是 有 機會 用 用 用 用 用 用 重要 重要 重要 重要 重要 重要.

本篇是用 Crypto.js 來進行加解密的動作,選它是因為網路上很多人推薦,GitHub 上星星數也多 …的很簡單, 因此就決定是它了.

CryptoJS 기술 문서: GitHub .


安裝



官方文件提供的安裝方式主要分為二種:前端 Browser、後端 Node.js.

身為一位專業的前端工程師們,我們這邊就傲驕的用前端版的.

前端安裝方式也有二種:直接 CDN 引用、import.

CDN



基本上搜尋「crypto js cdn」,就會看見一些第三方的 CDN 網站有提供,比方 cdnjs .

寫這篇時的最新版本是 4.1.1,可以直接引用:

<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"></script>


수입



首先先安裝 패키지:

$ npm install crypto-js
# 或
$ yarn add crypto-js


接著는 JS 檔中 import,import 時可以選擇直接整包,也可以只引用 我們有用到的功能.

本篇不會直接 import 整包,而是只 import 有用到的功能:

import AES from 'crypto-js/aes';
import Rabbit from 'crypto-js/rabbit';
import encUtf8 from 'crypto-js/enc-utf8';



사용하다



API 관련 문서: GitBook .

AES 加密解密



AES 加解密是官方提供的範例之一,使用方式很簡單:

import AES from 'crypto-js/aes';
import encUtf8 from 'crypto-js/enc-utf8';

// 加密
const ciphertext = AES.encrypt('要加密的字串', '加密密碼').toString();

// 解密
const bytes = AES.decrypt(ciphertext, '加密密碼');
const originalText = bytes.toString(encUtf8);

加密密碼就是每個人自行設定,把它當通關密語,加密跟解密的雙方都要用這組密碼來認證一樣.

除了加解密字串,文件裡也有提供加解密 개체 的部份,其實就是把 개체 變成字串:

import AES from 'crypto-js/aes';
import encUtf8 from 'crypto-js/enc-utf8';

const obj = [{id: 1}, {id: 2}]

// 加密
var ciphertext = CryptoJS.AES.encrypt(JSON.stringify(obj), '加密密碼').toString();

// 解密
var bytes  = CryptoJS.AES.decrypt(ciphertext, '加密密碼');
var originalObj = JSON.parse(bytes.toString(CryptoJS.enc.Utf8));


토끼 加密解密



除了範例上的 AES,看 API 文件裡提到的 Rabbit好像也是蠻厲害的,寫法跟 AES 差不多.

import Rabbit from 'crypto-js/rabbit';
import encUtf8 from 'crypto-js/enc-utf8';

// 加密
const encrypted = Rabbit.encrypt('要加密的字串', '加密密碼');

// 解密
const decrypted = Rabbit.decrypt(encrypted, '加密密碼');
const originalText = decrypted.toString(encUtf8);

좋은 웹페이지 즐겨찾기