引言

  在我们使用React开发Web前端的时候,如果是比较大的项目和正常的项目的话,我们必然会用到加解密,之前的文章中提到.NET的一些加解密,那么,这里我就模拟一个例子:

  1.后台开发API接口,但API接口需要加密请求,或者需要解密输出参数

  2.前端使用React开发web调用API接口

让我们开始吧

  那么针对于上述问题,我们可以使用"crypto-js"组件,具体使用方式可以去GitHub上搜索相应的组件,本文例子使用使用AES的方法进行加解密,结束上述需求

  当我们引用组件后,那么我们就可以配置公共方法组件:

import * as CryptoJS from 'crypto-js';

let AuthTokenKey = "XXX"; //AES密钥
let AuthTokenIv = 'XXX'; //AES向量 /*AES加密*/
export function Encrypt(data) {
let dataStr = JSON.stringify(data);
let encrypted = CryptoJS.AES.encrypt(dataStr, CryptoJS.enc.Latin1.parse(AuthTokenKey), {
iv: CryptoJS.enc.Latin1.parse(AuthTokenIv),
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return encrypted.toString();
} /*AES解密*/
export function Decrypt(data) {
let data2 = data.replace(/\n/gm, "");
let decrypted = CryptoJS.AES.decrypt(data2, CryptoJS.enc.Latin1.parse(AuthTokenKey), {
iv: CryptoJS.enc.Latin1.parse(AuthTokenIv),
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return decrypted.toString(CryptoJS.enc.Utf8);
}

aes.js

  配置完成,接下来就是正式的调用了。

import { Encrypt, Decrypt } from './aes';

......

let data = { body : Encrypt({gatherType: gatherType})};
Request.FetchPost("api/Gather/GetSignCount", data).then(json=>{
if (条件) {
//执行
}
else {
//执行
}
});

附录

  本文只是最简单的例举了一些引用和调用的方式,当然在AES加密的方法上还要匹配填充模式等等,这里就不是React的范畴了(而是需要跟API接口后端写的加密方式对应匹配啦),会用AES的基本上也都能知道和了解。

最新文章

  1. [LeetCode] Intersection of Two Linked Lists 求两个链表的交点
  2. Sparse Filtering 学习笔记(一)网络结构与特征矩阵
  3. SharePoint 2013 Error - TypeError: Unable to get property 'replace' of undefined or null reference
  4. android之广播(一)
  5. 10月21日上午MySQL数据库学习内容复习
  6. 非对称认证方式 可以用在 asp.net webapi 的安全机制里面
  7. 解决git Push时请求username和password,而不是ssh-key验证
  8. CATextLayer
  9. java.lang.NoSuchMethodError: org.apache.commons.io.FileUtils.getTempDirectory()Ljava/io/File;
  10. 1002. 写这个号码 (20)(数学啊 ZJU_PAT)
  11. JS的事件动态绑定机制
  12. GIT入门笔记(5)- 创建版本库
  13. Android 实现形态各异的双向侧滑菜单 自定义控件来袭
  14. To My Girlfriend (DP)
  15. 【BZOJ 1701】Cow School(斜率优化/动态凸包/分治优化)
  16. M. Subsequence 南昌邀请赛
  17. Git回滚代码到某个commit
  18. 模板·点分治(luogu P3806)
  19. 大数据 - spark-sql 常用命令
  20. ansible管理windows (发送文件)

热门文章

  1. RAP开发入门-运行第一个HelloWorld(二)
  2. 话说普通的TPlink ip地址是192.168.1.2 在LAN里有台电脑共享打印机 ip 是192.168.0.2 计算机名为j02 然后我把这台电脑加到DMZ里,让根路由器同一网段的可以访问 但添加打印机的时候 提示 计算机名重复 后来在需要添加打印机电脑的hosts文件里加了 192.168.1.2 j02 式了一样不行 话说,这个打印机该怎么添加
  3. Aspose.Cells基础使用方法整理
  4. div纵向居中的方法(转载)
  5. 凸多边形 HRBUST - 1429 计算几何_凸包_未调完
  6. 根据 thread id 停止一个线程
  7. 三、Git 分支
  8. PHP下的Oauth2.0尝试 - OpenID Connect
  9. 2019-03-14 Python爬虫问题 爬取网页的汉字打印出来乱码
  10. 前端和后台对接时对sign加密方法