JavaScript AES加密

对称加密算法主要有AES、DES、3DES / 非对称加密算法主要有RSA、DSA、RCC
iv(初始变量)
key(加密密钥)
mode(加密模式 主要有CBC(默认)、CFB、CTR、OFB、ECB)
padding(填充方式 主要有Pkcs7(默认)、Iso97971、AnsiX923、Iso10126、ZeroPadding、 NoPadding)
编码格式: Base64 、Latin1 、Hex 、Utf8 、 Utf16 、Utf16LE

对于密码, crypt 可以接收 字符串或者 WordArray
字符串:当我们使用字符串的时候, 密码会被当初一个密码短语,会自动生成实际的 秘钥 和 iv
WordArray: 我们传递一个实际的WordArray时,则还必须传递实际的IV。
(即都传 WordArray 对象,iv 也必须是 WordArray 对象,这样加密出来的内容就是固定的)
(如果密匙使用了字符串,指定iv是没有用的, 每次生成的密文会改变)

npm i crypto-js

参考文档: https://cryptojs.gitbook.io/docs/

import CryptoJS from 'crypto-js'

const cryptoKey = CryptoJS.enc.Utf8.parse('qwertyuiopasdfgh') // 加密的key
const iv = CryptoJS.enc.Utf8.parse('') // 密码偏移量

/**
 * @author zhuoer
 * 对称加密算法主要有AES、DES、3DES / 非对称加密算法主要有RSA、DSA、RCC
 * iv(初始变量)
 * key(加密密钥)
 * mode(加密模式 主要有CBC(默认)、CFB、CTR、OFB、ECB)
 * padding(填充方式 主要有Pkcs7(默认)、Iso97971、AnsiX923、Iso10126、ZeroPadding、 NoPadding)
 * 编码格式: Base64 、Latin1 、Hex 、Utf8 、 Utf16 、Utf16LE
 *
 *  * 对于密码, crypt 可以接收 字符串或者 WordArray
 * 字符串:当我们使用字符串的时候, 密码会被当初一个密码短语,会自动生成实际的 秘钥 和 iv
 * WordArray: 我们传递一个实际的WordArray时,则还必须传递实际的IV。
 * (即都传 WordArray 对象,iv 也必须是 WordArray 对象,这样加密出来的内容就是固定的)
 * (如果密匙使用了字符串,指定iv是没有用的, 每次生成的密文会改变)
 *
 * 参考文档: https://cryptojs.gitbook.io/docs/
 * */

/**
 * @export
 * @param {*} text 加密内容
 * @return {*}
 */
export function AESEncrypt(text, option) {
  let encrypto = CryptoJS.AES.encrypt(text, cryptoKey, {
    iv: iv,
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7,
  })
  return encrypto.toString()
}

/**
 * @export
 * @param {*} text 解密内容
 * @return {*}
 */
export function AESDecrypt(text, option) {
  let bytes = CryptoJS.AES.decrypt(text, cryptoKey, {
    iv: iv,
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7,
  })
  let originalText = bytes.toString(CryptoJS.enc.Utf8);
  return originalText
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容