0.0.2 • Published 2 years ago

@gstzy/crypto-aes v0.0.2

Weekly downloads
-
License
MIT
Repository
-
Last release
2 years ago

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);
0.0.2

2 years ago

0.0.1

2 years ago