前端使用rsa对密码加密,springboot使用rsa对密码进行解密

embedded/2024/10/10 23:40:06/

前端

<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>JSEncrypt Example</title><script src="https://cdn.rawgit.com/spark/crypto-js/master/crypto-js.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/jsencrypt/3.0.0/jsencrypt.min.js"></script>
</head>
<body><script>const encrypt = new JSEncrypt();//从后端请求获取公钥const publicKey = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtrtCYsDNujsZxemUPUAga4CQ78QT8ImCXk8kkdDi9brJQAGINg1jiMYeQ4NAb5Ct3YMcZLuqVVvlO51tkj8CNOhR93weRH0HPMG51mrF19MFqZOT3Eqr073DkeeenCfgF/YOOcCPalCYYxdPf2bYIZ9ET6tyd04b+uaIzr0GK0B+NPYyurI1VL1T4inD7t38It5EXVbbrOjtUdZq/zmHYU95ONQo23qY5gY45Esq+N2u3rhLlzAsKq0d+elgKfzn2I9vEaqDbaGxGT9Es7owXClDG94GraRkQFYQil9H5/iVJ9oDqVGhEJlRyXx3yrX8oull8WY1n9nSW7h6UbyAoQIDAQAB'// 设置公钥encrypt.setPublicKey(publicKey);// 定义要加密的数据const password = 'hello world';// 加密数据,加密后的数据为base64编码的字符串,后端需先解码const encryptedPassword = encrypt.encrypt(password);//向后端发起请求await axios({url:"http",data:{password:encryptedPassword}})// 输出加密后的字符串console.log(encryptedPassword); </script></body>

后端

包为

import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import java.security.*;
import java.util.Base64;
  private static final KeyPairGenerator keyPairGen;private static final KeyPair keyPair ;private static final PublicKey publicKey ;private static final PrivateKey privateKey ;static {try {keyPairGen = KeyPairGenerator.getInstance("RSA");keyPairGen.initialize(2048);keyPair = keyPairGen.generateKeyPair();publicKey = keyPair.getPublic();privateKey = keyPair.getPrivate();} catch (NoSuchAlgorithmException e) {throw new RuntimeException(e);}}//获取rsa公钥public static String getPublicKey(){return Base64.getEncoder().encodeToString(publicKey.getEncoded());}//对获取的rsa密文解码获取密码public static String decryptRSA(String rawPassword) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {//注意这里一定要指定rsa的加密方式和填充方式为下面的,不然前端加密后的密文解析不了Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");cipher.init(Cipher.DECRYPT_MODE, privateKey);byte[] bytes = cipher.doFinal(Base64.getDecoder().decode(rawPassword));return new String(bytes);}
//获取密码@GetMapping("/test")public String test(@RequestBody res r,@RequestParam("raw")String raw) throws NoSuchPaddingException, IllegalBlockSizeException, NoSuchAlgorithmException, BadPaddingException, InvalidKeyException {return PasswordUtil.decryptRSA(r.getRaw());}


http://www.ppmy.cn/embedded/125602.html

相关文章

听说这是MATLAB基础?

MATLAB&#xff08;矩阵实验室&#xff09;是一个强大的高性能计算环境和编程语言&#xff0c;广泛应用于数学计算、算法开发、数据分析、可视化以及模拟等多个领域。以下是MATLAB的一些基础知识&#xff0c;涵盖其功能、语法、基本操作等方面。 1. MATLAB环境 工作区&#xf…

QT学习笔记4.1(常用控件、功能、窗口)

QT学习笔记4.1&#xff08;常用控件) 目录 控件功能、属性 窗口常用功能、属性 扩展功能&#xff1a; 资料 控件功能、属性 1.打开网址 点击菜单名字打开网址&#xff1a; 检测&QMenu::aboutToShow菜单展开信号-》槽函数--》title“”&#xff0c;--》执行打开网址…

使用 Spring Boot 在电商平台中动态调整促销信息

业务背景 在电商平台上&#xff0c;促销活动是吸引用户的重要手段之一。然而&#xff0c;促销活动的状态&#xff08;如开始、结束&#xff09;可能会频繁变化&#xff0c;而这些变化需要实时反映在商品详情页上。如果每次促销状态改变都需要重新部署应用或者手动更改代码&…

牛客:[NOIP2002]字串变换(双向bfs)

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 已知有两个字串 A, B及一组字串变换的规则&#xff08;至多6个规则&#xff09;: A1 -> B1 A2 -> B2 规则的含义为&#xff1a;在A中的子串 A1可以变换为 B1、A2可以变换为 B2…

网络接入的镜像模式和串接模式

网络接入的镜像模式和串接模式主要有以下特点&#xff1a; 一、镜像模式 1. 工作原理 - 镜像模式也称为端口镜像&#xff0c;是将网络中指定端口的数据流量复制一份到另一个监测端口&#xff0c;以便进行网络分析、故障排查和安全监控等。例如&#xff0c;将连接重要服务器…

CDAM数据资产管理的策略制定与落地

在当今数字化时代&#xff0c;数据已成为企业最宝贵的资产之一&#xff0c;其质量和价值直接关系到企业的决策效率和市场竞争力。因此&#xff0c;数据资产管理成为企业不可忽视的重要议题。本文将探讨数据资产管理的策略制定与落地过程&#xff0c;以期为企业提供实践指导。 一…

APP的命令和monkey压力测试

一、命令的使用&#xff1a; 1.dos下链接&#xff1a;adb connect 127.0.0.1:62001 2.所附设备清单&#xff1a;adb devices device:已识别的设备&#xff0c;表示连接成功 unauthorized:没有授权需要手机授权才能连接 unkown:未识别设备 offline:离线设备 3.版本&#xff1a;…

刷题 链表

面试经典150题 - 链表 141. 环形链表 class Solution { public:bool hasCycle(ListNode *head) {ListNode* slow head, *fast head;while (fast ! nullptr && fast->next ! nullptr) {slow slow->next;fast fast->next->next;if (slow fast) {return…