首页 > 其他分享 >前端数据传输加密_解密方式

前端数据传输加密_解密方式

时间:2023-06-06 16:48:36浏览次数:37  
标签:enc 加密 Utf8 解密 iv parse let 数据传输 CryptoJS

  1. 首先安装 crypto-js插件,安装命令:

npm install crypto-js -S
-S等同于--save,保存在package.json文件中,是在dependencies 下,--save安装包信息将加入到dependencies(生产环境)中,生产阶段的依赖,也就是项目运行时的依赖,就是程序上线后仍然需要依赖;

-D等同于--save-dev,也保存在package.json文件中,是在devDependencies下,--save-dev 安装包信息将加入到devDependencies(开发环境)中,开发阶段的依赖,就是我们在开发过程中需要的依赖,只在开发阶段起作用。

  1. 新建crypto.js文件,封装自定义加密和解密方法,导出:
import CryptoJS from 'crypto-js'
 
// 默认的KEY与iv与后端保持一致,不采用后端传值密钥
const KEY = CryptoJS.enc.Utf8.parse('aaDJL2d9DfhLZO0z');// 密钥
const IV = CryptoJS.enc.Utf8.parse('412ADDSSFA342442');// 偏移量  
 
/** AES加密 */
export function Encrypt(word, keyStr, ivStr) {
  let key = KEY;
  let iv = IV;
 
  if (keyStr) {
    key = CryptoJS.enc.Utf8.parse(keyStr);
    iv = CryptoJS.enc.Utf8.parse(ivStr);
  }
 
  let srcs = CryptoJS.enc.Utf8.parse(word);
  var encrypted = CryptoJS.AES.encrypt(srcs, key, {
    iv: iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.ZeroPadding
  });
 
  return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
 
}
 
 
/** AES 解密 */
export function Decrypt(word, keyStr, ivStr) {
  let key  = KEY;
  let iv = IV;
 
  if (keyStr) {
    key = CryptoJS.enc.Utf8.parse(keyStr);
    iv = CryptoJS.enc.Utf8.parse(ivStr);
  }
 
  let base64 = CryptoJS.enc.Base64.parse(word);
  let src = CryptoJS.enc.Base64.stringify(base64);
 
  var decrypt = CryptoJS.AES.decrypt(src, key, {
    iv: iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.ZeroPadding
  });
 
  var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
  return decryptedStr.toString();
 
}
  1. 引入使用,如下:
//引入
import {Decrypt,Encrypt} from "./crypto.js";
 
//使用方式
Encrypt(JSON.stringify(config.data));//加密
eg: //密码加密
this.formLogin.password = Encrypt(JSON.stringify(this.formLogin.password));
 
JSON.parse(Decrypt(response.data));//解密
eg: //密码解密
this.formLogin.password = JSON.parse(Decrypt(this.getCookie("password")));

作者:张勇辉

标签:enc,加密,Utf8,解密,iv,parse,let,数据传输,CryptoJS
From: https://www.cnblogs.com/DTCLOUD/p/17460948.html

相关文章

  • KingbaseES V8R6 表空间加密
    透明存储加密优势透明存储加密可确保加密敏感数据满足合规性要求,并提供简化加密操作的功能,优势如下:作为安全管理员,您可以确保敏感数据已加密,因此在存储介质或数据文件被盗或入侵者试图从操作系统访问数据文件时,绕过访问控制数据库。使用透明存储加密可帮助您解决与安全相关......
  • 如易云解密2-自动生成代码
          如易云框架 先了解,基于如易云在线服务可快速生成类似javascript:void(0)的全套代码。第一步当然是注册 如易云账号了,如图:(还没做任何校验,请填写正确的信息)注册页面第二步登录成功后,会跳转到如易云管理控制台,可以选择一键生成应用,别着急,等一段时......
  • 【C#】加密算法
    一、理论1、https://zhuanlan.zhihu.com/p/4465815752、几种常用的加密方式 二、Aes加密“指定的密钥对此算法无效”建议您通过在AES类中使用LegalKeySizesproperty来检查密钥的有效大小。有效密钥大小由特定的对称算法实现指定,并在LegalKeySizes属性中列出。varkey......
  • 非对称加密DH算法,DH代码实现
    RSA算法原理(一)[url]http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html[/url]RSA算法原理(二)[url]http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html[/url]1976年,两位美国计算机学家WhitfieldDiffie和MartinHellma......
  • PHP加密解密代码
    [color=red][b]PHP加密解密字符串[/b][/color][url]http://www.helloweba.com/view-blog-255.html[/url],[b][size=large][color=red]这个很不错.[/color][/size][/b][color=red][b]一组PHP可逆加密解密算法[/b][/color][url]http://www.phper.org.cn/ind......
  • Bouncy Castle SM2加解密
    配置过程下载相关包。我参考了连接:https://blog.csdn.net/weixin_42221688/article/details/90475014修改配置文件$JAVA_HOME$\jre\lib\security\java.security,在末尾添加security.provider.11=org.bouncycastle.jce.provider.BouncyCastleProvider;测试:代码运行sm2_demo......
  • Groovy 基于Groovy实现MD5加密
    groovy3.0.7代码实现实现方式1importjava.security.MessageDigest;publicclassMD5Utils{ publicfinalstaticStringMD5(Strings){ char[]hexChars=['0','1','2','3','4','5','6',�......
  • tink google 加密安全实践的框架
    tink是google多年加密实践的框架,提供了安全的加密处理方法,可以简化不少我们的加密处理参考使用publicstaticvoidmain(String[]args)throwsGeneralSecurityException,IOException{AeadConfig.register();//1.Generatethekeymateri......
  • java 实现AES加解密后,与在线工具测试结果不一致
    最近有个项目,因为参数里面带有sql可能是客户网关对参数做了防侵入,用简单的base64加密后居然还是不行,决定用AES加密。代码如下。/***参数加密私钥*/staticfinalStringparamPrivateKey="3dae12897b044f96";声明密钥/***加密*@paramsSrc......
  • 《加密与解密》- 第一章 - 基础知识 - 笔记
    (纠正了书中一些不正确的地方,如P11中2**64bytes等于16TB已修改为16EB)1.1什么是加密与解密1.1.1软件的加密与解密略1.1.2软件逆向工程内容:去除使用限制或者添加功能获得源代码硬件的复制和模拟要求品质:保持好奇,崇尚自由勤奋+毅力精通至少一门编程语言,尤其是编程思......