美文网首页
数据加密

数据加密

作者: 琳媚儿 | 来源:发表于2020-10-16 11:19 被阅读0次

util 底下得 AES.js 文件

npm install crypto-js
import CryptoJS from 'crypto-js'
/* 判断是否加密 true加 false不加 */
const encrypt = false;

/**
 * @Description: 加密
 * @Author: WenBo Wei
 * @Date: 2020/7/22
 *
 * @param data string 待加密数据字符串
 * @param secret string 秘钥
 * @param iv string 偏移量
 * @return string 加密后字符串
 */

export function encryptData(data, secret = '9ouxQY9ALwFhQaFj', iv = 'FQFBCcQh59HNFr2M') { // 加密
  let $secret = CryptoJS.enc.Utf8.parse(secret)
  let $iv = CryptoJS.enc.Utf8.parse(iv)
  let encrypted = CryptoJS.AES.encrypt(data, $secret, {
    iv: $iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  })
  encrypted = encrypted.toString() // 返回的是base64格式的密文
  return encrypted
}

/**
 * @Description: 解密
 * @Author: WenBo Wei
 * @Date: 2020/7/22
 *
 * @param data string 待解密数据字符串
 * @param secret string 秘钥
 * @param iv string 偏移量
 * @return string 解密后字符串
 */

export function decryptData(data, secret = '9ouxQY9ALwFhQaFj', iv = 'FQFBCcQh59HNFr2M') {
  let $secret = CryptoJS.enc.Utf8.parse(secret);
  let $iv = CryptoJS.enc.Utf8.parse(iv);
  let decrypted = CryptoJS.AES.decrypt(data, $secret, {
      iv: $iv,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7
  });
  return decrypted.toString(CryptoJS.enc.Utf8);
}



/*
    加密数据
*/
export function aesEncrypt(req) {
  if (encrypt) {
    let secret = wx.getStorageSync('secret')
    if (secret){
        secret = secret.slice(0,16)
    }
    let timestamp = ~~((new Date()).getTime() / 1000);
    let encrypt_data
    if (req.method === 'post') {
      if (!req.data) req.data = {}
      req.data['timestamp'] = timestamp
      if (secret) {
        encrypt_data = encryptData(JSON.stringify(req.data), secret)
      } else {
        encrypt_data = encryptData(JSON.stringify(req.data))
      }
      req.data = {
        data: encrypt_data
      }
    } else {
      if (!req.params) req.params = {}
      req.params['timestamp'] = timestamp
      if (secret) {
        encrypt_data = encryptData(JSON.stringify(req.params), secret)
      } else {
        encrypt_data = encryptData(JSON.stringify(req.params))
      }
      req.params = {
        data: encrypt_data
      }
    }
  }
  return req
}

/*
    解密数据
*/
export function aesDecrypt(res) {
  if (encrypt) {
    let secret = wx.getStorageSync('secret')
    if (secret){
        secret = secret.slice(0,16)
    }
    let decrypt_data
    if (secret) {
      decrypt_data = decryptData(res.data.data, secret)
    } else {
      decrypt_data = decryptData(res.data.data)
    }
    res.data.data = JSON.parse(decrypt_data)
  }
  return res
}

api-manager.js 中引用加密/解密函数

import {
    aesEncrypt,
    aesDecrypt
} from './AES.js'
//在请求拦截器中讲数据放到解密函数中
const req_data = aesEncrypt(request)
console.log('%c请求拦截器:', 'color:#ffa502;font-size:20px;font-weight:bold;',req_data);
//响应拦截器
const res_data = aesDecrypt(response)
console.log('%c响应拦截器:', 'color:green;font-size:20px;font-weight:bold;',res_data);

相关文章

  • Android数据加密(转)

    Android数据加密之Rsa加密 Android数据加密之Aes加密 Android数据加密之Des加密 And...

  • Python-RSA加密实现

    实现RSA不对称加密算法的大数据加密 1.加密模块:传入参数:需要加密的字节数据,返回数据:加密后的字节数据2.解...

  • DES加密

    知识补充: 数据安全包含通道加密https和上传数据加密全问题(一些算法加密,对称加密和非对称加密)。 ...

  • iOS加密1——概述

    一、简单说明数据安全包含通道加密https和上传数据加密全问题(一些算法加密,对称加密和非对称加密)。加密算法通常...

  • iOS加密——概述

    一、简单说明数据安全包含通道加密https和上传数据加密全问题(一些算法加密,对称加密和非对称加密)。加密算法通常...

  • iOS-归档NSCoding序列化

    归档 归档->数据持久化的方式->加密(把文件加密《不是把数据加密》 归档分为: 1、存储数据(编码、序列化、归档...

  • 安全编程基础

    安全编程基础 目录 数据加密 数字签名 哈希算法 数字签名 PKI体系 加密通信 一.数据加密 分类:对称加密,非...

  • 数据加密技术概述

    数据加密技术的包括这样几方面的内容:数据加密、数据解密、数字签名、签名识别以及数字证明等。 数据加密模型组成 明文...

  • Java面试

    一、数据库 1、常见的数据库查询修改和数据库加密问题 (1)数据库的密码加密:单向加密,insertinto...

  • 加密习题

    1.现代密码学可以加密什么数据?文本数据和二进制数据都可以2.对称加密的加密与解密过程使用密钥进行加密算法,对数据...

网友评论

      本文标题:数据加密

      本文链接:https://www.haomeiwen.com/subject/vsqzpktx.html