好的,我分别给出一个简单的前端代码样例和后端 Node.js 代码样例,示范如何加密前端传参和后端结果返回的加密。

前端代码示例:

import CryptoJS from 'crypto-js';const key = CryptoJS.enc.Utf8.parse('1234567890abcdef');   // 定义加密密钥
const data = { username: 'user123', password: 'password123' };
const ciphertext = CryptoJS.AES.encrypt(JSON.stringify(data),key,{ mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }
).toString();fetch('https://api.example.com/auth', {method: 'POST',headers: {'Content-Type': 'application/json',},body: JSON.stringify({ data: ciphertext }),
})
.then(response => response.json())
.then(result => {const decrypted = CryptoJS.AES.decrypt(result.data,key,{ mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }).toString(CryptoJS.enc.Utf8);console.log(JSON.parse(decrypted));
})
.catch(error => console.log(error));

上面这段代码中,定义了一个 16 位加密密钥,使用 CryptoJS 进行前端加密和解密。在发送请求前,使用 AES 加密需要传递的数据,并将密文作为参数传递给后端。后端返回的密文需要使用相同的密钥进行解密,才能获得返回结果。

后端代码示例:

const express = require('express');
const app = express();
const CryptoJS = require('crypto-js');app.use(express.json());app.post('/auth', function(req, res) {const key = CryptoJS.enc.Utf8.parse('1234567890abcdef');   // 定义加密密钥const ciphertext = req.body && req.body.data;if (!ciphertext) {throw new Error('缺少加密参数!');}const bytes = CryptoJS.AES.decrypt(ciphertext, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });const decrypted = bytes.toString(CryptoJS.enc.Utf8);const data = JSON.parse(decrypted);// 后端业务代码处理,生成最终结果const responseData = { userId: 'user123', token: '0123456789abcdef' };const responseCiphertext = CryptoJS.AES.encrypt(JSON.stringify(responseData),key,{ mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }).toString();res.json({ data: responseCiphertext });
});app.listen(3000, () => console.log('启动服务器,端口号:3000'));

上面这段代码使用 Node.js 实现了一个简单的 HTTP 服务器,处理 POST 请求并返回加密的处理结果。在处理参数时,先使用相同的密钥对前端传入的密文数据进行解密,再进行业务处理并生成最终结果。最后使用 AES 进行加密,并将加密后的密文作为结果返回给前端。

以上示例代码供参考,实际开发中需要根据具体的业务需求进行调整和优化。

以下是使用 PHP 语言实现的后端代码样例。和前面给出的 Node.js 代码示例逻辑类似,使用相同的 AES 加密算法来加密参数和返回结果。

<?phpfunction encrypt($data, $key) {$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);$pad_size = 16 - (strlen($data) % 16);$data = $data . str_repeat(chr($pad_size), $pad_size);$ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_ECB, $iv);return base64_encode($ciphertext);}function decrypt($ciphertext, $key) {$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);$decode = base64_decode($ciphertext);$plaintext = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $decode, MCRYPT_MODE_ECB, $iv);$pad_size = ord($plaintext[strlen($plaintext) - 1]);$plaintext = substr($plaintext, 0, -$pad_size);return $plaintext;}$key = '1234567890abcdef';    // 定义加密密钥$ciphertext = $_POST['data'];if (!$ciphertext) {throw new Exception("缺少加密参数!");}$decrypted = decrypt($ciphertext, $key);$data = json_decode($decrypted);// 后端业务代码处理,生成最终结果$responseData = [ "userId" => "user123", "token" => "0123456789abcdef" ];$responseCiphertext = encrypt(json_encode($responseData), $key);echo json_encode([ "data" => $responseCiphertext ]);
?>

以上 PHP 代码使用 mcrypt 库来实现加密和解密,使用 AES 加密算法来加密参数和返回结果。

需要特别注意的是,mcrypt 已经被 PHP7 废弃,建议替换为其他加密方式,如 OpenSSL。同时,需要注意加密模式、填充方式、加密初始向量等参数的设置,以保证加密效果的安全性。

好的,我可以给您提供一个简单的示例代码,用于前端对敏感数据进行 AES 加密的实现。以下代码是使用 CryptoJS 库进行加密的示例。

首先需要在 HTML 中引入 CryptoJS 库:

<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.min.js"></script>

然后在 JavaScript 中调用以下代码进行加密:

// 待加密数据
var dataToEncrypt = 'This is a test message';// AES 加密密钥
var encryptionKey = 'This is an encryption key';// 通过 CryptoJS 的 AES 加密模块进行加密
var encryptedData = CryptoJS.AES.encrypt(dataToEncrypt, encryptionKey);// 将加密后的数据转换为字符串形式
var encryptedDataStr = encryptedData.toString();

以上代码将输出加密后的数据的字符串形式,可以将其提交到后端进行解密处理。需要注意的是,加密解密使用的密钥必须保密,不能在前端代码中明文存储,否则加密的意义就失去了。最好的方式是在服务器端生成密钥并发送给客户端(比如在用户登录时),客户端保存密钥并在之后的通信过程中使用。

当然,这只是一个最简单的示例,实际使用时需要考虑更多实际情况,比如加密算法的选取、密钥的生成、数据的编码方式等等。

加密前端传参和后端结果返回加密相关推荐

  1. springboot前端传参date类型后台处理方式

    springboot前端传参date类型后台处理方式 先说结论:建议大家直接使用@JsonFormat,原因如下: 1.针对json格式:在配置文件中加以下配置 spring.jackson.date ...

  2. 【spring-boot】前端传图像到后端

    spring-boot+thymeleaf+ajax前端传图像到后端 注意: 前端html 前端js(ajax) 后端controller层 配置文件application.yml 注意: 本文总体上 ...

  3. 前端传对象都后端获取参数的时候多了一对双引号

    前端传参:正常传参.... 后端接收到的参数:多了双引号 找了好久都不懂哪里出错了,百度的方法前端的后端的都试了个遍也不行,后面还是从头到尾看了很多遍,参数也换了都不行,最后把入参的对象改了一下,果然 ...

  4. 任务(多线程并行)TFDMemTable内存表传参方式调用服务器返回的TDataSet

    任务(多线程并行)TFDMemTable内存表传参方式调用服务器返回的TDataSet 服务器端: function TServerMethods1.getTFDDataSet   ( const p ...

  5. ajax前端传参总结

    总结 @RequestParam()接收前端数据的情况: POST请求"application/x-www-form-urlencoded'",此时传参能用JSON.stringi ...

  6. 微信小程序传参到后端解析出手机号(java实现)

    需要的Maven依赖 <dependency><groupId>com.alibaba</groupId><artifactId>fastjson< ...

  7. 使用Axios拦截器打印前端请求日志和后端后返回日志

    在main.ts引入 import axios from 'axios'; axios.defaults.baseURL = process.env.VUE_APP_SERVER;/*** axios ...

  8. 用moment获取一年内指定周的起始时间和结束时间、用户所选时间和前端传参时间不一致问题

    问题1: 原代码: //所选周selectedWeek:{handler(){let selectedWeek = parseInt(this.selectedWeek.substring(1))// ...

  9. php后端aes加密前端解密

    项目场景: 领导要求公司后台的全部接口与前端交互时,所有参数以及返回值需要进行加密.后端语言 PHP,使用框架 tp5.1,前端vus.js,使用CryptoJS加解密 效果如下: 前端传参: 后端返 ...

最新文章

  1. 网络流24题-骑士共存
  2. python实现迭代的快速排序(Iterative Quick Sort)
  3. Spring编程式和声明式事务实例讲解
  4. python密码学编程pdf-Python密码学编程PDF电子书免费下载
  5. 何杰月c语言课程,北京西城区教育科研月:学科核心素养的教学探索
  6. CRM公海自动回收规则
  7. python入门之字符串处理_Python基础之字符串操作,格式化。
  8. matlab rsdec,MATLAB在RS码实现中的应用
  9. VUE 生命周期图示
  10. java常用string inputStream转换
  11. android下载文件下载不完全解决方案
  12. 你还在为找素材发愁吗?自媒体高手都知道的免费自媒体素材网
  13. Android开发之高德地图导航
  14. arduino ps2摇杆程序_Arduino 双轴按键摇杆 PS2游戏摇杆 控制杆 JoyStick 电子积木
  15. Python强智教务系统模拟登录的两种方式
  16. 计算机内存错误 要降频,win7系统出现内存自动降频的解决方法
  17. Windows Server 2022 超融合部署
  18. 维特比算法的通俗案例解释
  19. 二进制小数转换为十进制数和
  20. python 如何将JSON数据原封不动的转为字符串(顺序不能变动)?

热门文章

  1. cyclic查看缓冲区溢出长度
  2. MATLAB处理OBJ模型
  3. shuffle机制详解
  4. backtrader进行期货回测要注意的问题:保证金等设置,拼接滚动合约
  5. C/C++,C++文件操作函数
  6. Java指令屏障_指令重排序和内存屏障
  7. 人脑能用计算机算法吗,计算机和人类大脑相比,谁才是“最强大脑”?
  8. iOS15 导航栏变黑色
  9. Saas.低代码平台建设
  10. 成功的IT创始精英访谈之谷歌公司CEO:埃里克·施密特——IT界的传说