• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

crypto-js的使用

武飞扬头像
Alano_bei
帮助1

一、先下载安装依赖:

npm install crypto-js -s

二、使用

import CryptoJS from 'crypto-js'
 // 1.消息摘要算法
    var wordArray = CryptoJS.enc.Utf8.parse("66666"); // 字符串先转变为wordArray, 也可以不用转变,实际情况根据网站
    var md5_str = CryptoJS.MD5(wordArray).toString(); // 加上.toString()由对象变成字符串
    var sha1_str = CryptoJS.SHA1(wordArray).toString();

    // DES, 3DES, RC4对称加密算法同理
    var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);
    var plaintext  = CryptoJS.DES.decrypt(ciphertext, key, cfg);

    var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);
    var plaintext  = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);

    var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);
    var plaintext  = CryptoJS.RC4.decrypt(ciphertext, key, cfg);

    // 2.对称加密算法
    // 2.1AES加密算法
    var pwd = CryptoJS.enc.Utf8.parse("666666"); // 解析明文
    var key = CryptoJS.enc.Utf8.parse("abcd1234"); // 解析秘钥
    var iv = CryptoJS.enc.Utf8.parse("666666"); // 解析偏移向量, CBC模式下用到, ECB模式不用

    var ciphertext = CryptoJS.AES.encrypt(pwd, key, {
        mode: CryptoJS.mode.CBC,  // 加密模式
        padding: CryptoJS.pad.Pkcs7,  // 填充方式
        iv: iv  // 偏移向量
    }).toString();

    alert(ciphertext)
    // ciphertext结果为:p0h2lUuOAh4tmEN7FTLq8w==, base64的形式
    // 2.2 AES解密算法, 必须为base64格式才能解密,如果为16进制,需要先转为base64
    var key = CryptoJS.enc.Utf8.parse("abcd1234"); // 解析秘钥
    var iv = CryptoJS.enc.Utf8.parse("666666"); // 解析偏移向量, CBC模式下用到, ECB模式不用
    var ciphertext = CryptoJS.AES.decrypt("p0h2lUuOAh4tmEN7FTLq8w==", key, {
        mode: CryptoJS.mode.CBC,  // 加密模式
        padding: CryptoJS.pad.Pkcs7,  // 填充方式
        iv: iv  // 偏移向量
    }).toString(CryptoJS.enc.Utf8);

    alert(ciphertext)


/**
 * CryptoJS 加密
 *
 * @param {String} encryptData  需要加密数据
 * @returns 加密后的数据
 * @memberof Utils
 */
export const encrypt = (encryptData) => {
  var key = CryptoJS.enc.Utf8.parse('as-Crypto-js')
  var srcs = CryptoJS.enc.Utf8.parse(encryptData)
  var encrypted = CryptoJS.AES.encrypt(srcs, key, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
  })
  return encrypted.toString()
}

/**
 * CryptoJS 解密
 *
 * @param {String} encryptData  需要加密数据
 * @returns 解密后的数据
 * @memberof Utils
 */
export const decrypt = (encryptData) => {
  var key = CryptoJS.enc.Utf8.parse('as-Crypto-js')
  var decrypt = CryptoJS.AES.decrypt(encryptData, key, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
  })
  return CryptoJS.enc.Utf8.stringify(decrypt).toString()
}

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhghaejc
系列文章
更多 icon
同类精品
更多 icon
继续加载