对称加密算法主要有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
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
}