0.0.2 • Published 2 years ago
@gstzy/crypto-aes v0.0.2
crypto-aes
使用AES算法处理数据加密或解密。
注意
基于 crypto-js 进行二次封装,使用过程如有疑问请参考官方文档
安装
使用 yarn 安装:
$ yarn add @gstzy/crypto-aes
使用 npm 安装:
$ npm install @gstzy/crypto-aes
快速入门
import CryptoAes from '@gstzy/crypto-aes';
/* key、config 参数请参考 https://cryptojs.gitbook.io/docs */
const crypto = new CryptoAes(key, config = { mode, padding, iv });
/**
* 设置 AES 密钥
* @param key 加、解密密钥
* @param parsed 是否已解析
*/
crypto.setKey(key, parsed);
/**
* 设置 AES 加、解密配置
* @param config 加、解密配置
* {
* mode: CryptoJS.mode.CBC, 运算模式,默认 CBC
* padding: CryptoJS.pad.Pkcs7, 填充模式,默认 PKCS7
* iv: void 0, 偏移量
* }
*/
crypto.setConfig(config);
/**
* AES 加密
* @param text 需要加密的字符串
* @param key 密钥,如果已调用了 setKey,则无需再次传递密钥
* @param config 加密配置,选填,默认使用配置
* @returns {string}
*/
const encrypted = crypto.encrypt(text, key, config);
/**
* AES 解密
* @param encrypted 加密的字符串
* @param key 密钥,如果已调用了 setKey,则无需再次传递密钥
* @param config 解密配置,选填,使用默认配置
* @returns {string}
*/
const decrypted = crypto.decrypt(encrypted, key, config);
/**
* 根据 Axios 应答获取需要解密的内容、解密偏移量信息
* 注意事项:后端应答标头需设置响应头为 Access-Control-Expose-Headers: Encryption来允许前端读取 Encryption 字段数值,否则在跨域、反代的情况就无法解密
* 详情参考:https://blog.csdn.net/weixin_46484674/article/details/127089137
* @param response
* @returns {{ciphertext, iv}}
*/
const decrypted = crypto.getResponseDecryption(encrypted, key, config);
/**
* 根据 Axios 应答的请求头、数据判断进行 AES 解密
* @param response Axios 应答对象
* @param key 密钥,如果已调用了 setKey,则无需再次传递密钥
* @param config 解密配置,选填,使用默认配置
* {
* mode: CryptoJS.mode.CBC, 运算模式,默认 CBC
* padding: CryptoJS.pad.Pkcs7, 填充模式,默认 PKCS7
* iv: void 0, 偏移量
* backend: string, 指定解密后端语言,目前只有 golang,其它待补充
* }
* @returns {*|response}
*/
const decryptedRes = crypto.decryptForAxios(response, key, config);
/**
* 给后端接口返回的数据进行 AES 解密
* @param encrypted 加密的字符串
* @param key 密钥,如果已调用了 setKey,则无需再次传递密钥
* @param backend 指定解密后端语言,目前只有 golang,其它待补充
* @returns {string}
*/
const decryptedRes = crypto.decryptForBackend(encrypted, key, backend);