前后端如何实现非对称加解密-使用RSA为例讲解!

server/2024/9/20 4:01:40/ 标签: 加解密, RSA

写在最前面,RSA是一种非对称加密算法,使用不同的公钥和私钥进行加密和解密。

下面是使用RSA进行加密和解密的代码示例:

RSA_4">前端:使用CryptoJS进行RSA加密

在前端JavaScript中,使用jsencrypt库来进行RSA加密:

  1. 首先引入jsencrypt库:这里要是不能使用CDN进行,可以访问网址下载到本地进行~
<script src="https://cdnjs.cloudflare.com/ajax/libs/jsencrypt/3.0.0-beta.1/jsencrypt.min.js"></script>
  1. 修改encryptSQL函数来使用RSA公钥进行加密:
function encryptSQL(sql) {const publicKey = `-----BEGIN PUBLIC KEY-----这里是公钥-----END PUBLIC KEY-----`;const encrypt = new JSEncrypt();encrypt.setPublicKey(publicKey);const encrypted = encrypt.encrypt(sql);return encodeURIComponent(encrypted);
}

RSA_30">后端:使用Java进行RSA解密

在后端Java中,使用java.securityjavax.crypto包来进行RSA解密:

  1. 导入必要的库:
下面是完整的后端代码,使用Java和RSA非对称加密算法进行解密操作:```java
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.spec.PKCS8EncodedKeySpec;
import javax.crypto.Cipher;
import java.util.Base64;/*** ClassName EncryptionUtil.java* author 舒一笑* version 1.0.0* Description RSA解密工具类* createTime 2024年07月08日 13:46:00*/
public class EncryptionUtil {private static final String ALGORITHM = "RSA";// 请使用安全的密钥存储方式private static final String PRIVATE_KEY = "-----BEGIN PRIVATE KEY-----\n"这里是私钥+ "-----END PRIVATE KEY-----";public static String decrypt(String input) throws Exception {byte[] privateKeyBytes = Base64.getDecoder().decode(PRIVATE_KEY.replaceAll("-----END PRIVATE KEY-----", "").replaceAll("-----BEGIN PRIVATE KEY-----", "").replaceAll("\n", ""));PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(privateKeyBytes);KeyFactory keyFactory = KeyFactory.getInstance(ALGORITHM);PrivateKey privateKey = keyFactory.generatePrivate(keySpec);Cipher cipher = Cipher.getInstance(ALGORITHM);cipher.init(Cipher.DECRYPT_MODE, privateKey);byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(input));return new String(decryptedBytes);}
}

RSA_79">RSA加解密网站推荐

https://www.bejson.com/enc/rsa/

在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/server/59467.html

相关文章

09.C2W4.Word Embeddings with Neural Networks

往期文章请点这里 目录 OverviewBasic Word RepresentationsIntegersOne-hot vectors Word EmbeddingsMeaning as vectorsWord embedding vectors Word embedding processWord Embedding MethodsBasic word embedding methodsAdvanced word embedding methods Continuous Bag-…

SpringSecurity中文文档(Servlet OAuth 2.0 Client)

OAuth 2.0 Client OAuth 2.0 Client 特性提供了对 OAuth 2.0授权框架中定义的 Client 角色的支持。 在高层次&#xff0c;可用的核心特征是: Authorization Grant support Authorization CodeRefresh TokenClient CredentialsResource Owner Password CredentialsJWT Beare…

python-django-LlamaIndex 精简版

&#x1f680; 一键安装LlamaIndex&#xff0c; pip install llama-index &#x1f4c1; 准备你的数据文件&#xff0c;无论是txt还是pdf&#xff0c;放入data文件夹&#xff0c;一切就绪。 &#x1f527; 简单几步&#xff0c;在views.py中集成LlamaIndex&#xff0c;代码如…

小程序内容管理系统设计

设计一个小程序内容管理系统&#xff08;CMS&#xff09;时&#xff0c;需要考虑以下几个关键方面来确保其功能完善、用户友好且高效&#xff1a; 1. 需求分析 目标用户&#xff1a;明确你的目标用户群体&#xff0c;比如企业、媒体、个人博主等&#xff0c;这将决定系统的功…

小白学webgl合集-Three.js加载器

THREE.TextureLoader: 用途: 加载单个图像文件并将其作为纹理应用到材质上。示例: const loader new THREE.DataTextureLoader(); loader.load(path/to/data.bin, function (texture) {const material new THREE.MeshBasicMaterial({ map: texture });const geometry new TH…

如何使用视频号矩阵系统:高效管理短视频内容的指南

视频号矩阵系统是一个为短视频内容创作者和品牌量身打造的管理工具&#xff0c;它通过一系列高级功能&#xff0c;帮助用户优化内容创作、管理和分发流程。本文将详细介绍如何使用视频号矩阵系统&#xff0c;以及如何利用其核心功能来提升您的短视频营销效果。 视频号矩阵系统…

[spring] Spring MVC - security(上)

[spring] Spring MVC - security&#xff08;上&#xff09; 这部分的内容基本上和 [spring] rest api security 是重合的&#xff0c;主要就是添加 验证&#xff08;authentication&#xff09;和授权&#xff08;authorization&#xff09;这两个功能 即&#xff1a; 用户…

时序预测 | Matlab实现TCN-Transformer的时间序列预测

时序预测 | Matlab实现TCN-Transformer的时间序列预测 目录 时序预测 | Matlab实现TCN-Transformer的时间序列预测效果一览基本介绍程序设计 效果一览 基本介绍 基于TCN-Transformer模型的时间序列预测&#xff0c;可以用于做光伏发电功率预测&#xff0c;风速预测&#xff0c;…

shark云原生-日志体系-filebeat高级配置(适用于生产)-更新中

文章目录 1. filebeat.inputs 静态日志收集器2. filebeat.autodiscover 自动发现2.1. autodiscover 和 inputs2.2. 如何配置生效2.3. Providers 提供者2.4. Providers kubernetes2.5. 配置 templates2.5.1. kubernetes 自动发现事件中的变量字段2.5.2 配置 templates 2.6. 基于…

Grind 75 | 3. merge two sorted lists

Leetcode 21. 合并两个有序链表 题目链接 思路&#xff1a; 和归并排序中 merge 部分一致 两个指针分别指向 2 个链表头每次选小的那个加入 res 中&#xff0c;对应指针后移一位;重复步骤2&#xff0c;直至一个指针到链表末尾将另一个剩余的全部 copy 到 res 中&#xff0c;链…

【Git 学习笔记】第二章 Git 的配置(上)

说明 本篇根据原书第二章前半部分的学习笔记整理&#xff0c;涉及 2.1 ~ 2.4 小节内容。具体实操代码库&#xff0c;需使用 GitHub 线上版本。 第二章 配置 Git 相关主题&#xff1a; 配置目标检索已有配置配置模板.git 目录模板几个配置示例设置 Git 别名refspec 举例 2.1 …

Github 2024-07-07 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-07-07统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目4Rust项目2C项目2C++项目1JavaScript项目1HTML项目1Jupyter Notebook项目1非开发语言项目1免费编程书籍和学习资源清单 创建周期:37…

快手kolors模型测评和安装完整教程(支持中文提示词、文字绘制 )

在人工智能领域&#xff0c;文本到图像合成技术一直是研究的热点。Kolors项目以其卓越的性能和创新的技术&#xff0c;正在重新定义这一领域的可能性。本文将深入探讨Kolors项目的核心优势、技术细节以及如何快速开始使用这一强大的模型。 随着深度学习技术的飞速发展&#xf…

5-3.损失函数

文章最前&#xff1a; 我是Octopus&#xff0c;这个名字来源于我的中文名–章鱼&#xff1b;我热爱编程、热爱算法、热爱开源。所有源码在我的个人github &#xff1b;这博客是记录我学习的点点滴滴&#xff0c;如果您对 Python、Java、AI、算法有兴趣&#xff0c;可以关注我的…

迅为3A5000LoongArch架构核心主板支持国产麒麟、统信、以及实时系统翼辉SylixOS

性能强 采用全国产龙芯3A5000处理器&#xff0c;基于龙芯自主指令系统 (LoongArch)的LA464微结构&#xff0c;并进一步提升频率&#xff0c;降低功耗&#xff0c;优化性能。 桥片 采用龙芯 7A2000&#xff0c;支持PCIE 3.0、USB 3.0和 SATA 3.0.显示接口2 路、HDMI 和1路 VGA&a…

idm下载慢怎么回事 idm批量导入下载使用方法

IDM (Internet Download Manager)是一款兼容性大&#xff0c;支持多种语言的下载管理软件&#xff0c;它可以自动检测并下载网页上的内容&#xff0c;这正是这一优点&#xff0c;使得它受到了广大用户的喜爱。在日常使用互联网的过程中&#xff0c;快速下载文件对我们来说非常重…

skywalking-1-服务端安装

skywalking很优秀。 安装服务端 skywalking的服务端主要是aop服务&#xff0c;为了方便查看使用还需要安装ui。另外采集的数据我们肯定要存起来&#xff0c;这个数据库就直接用官方的banyandb。也就是aop、ui、banyandb都使用官方包。 我们的目的是快速使用和体验&#xff0c…

网络安全应急处理流程

网络安全应急处理流程是指在发生网络安全事件时&#xff0c;组织应采取的一系列措施&#xff0c;以快速响应、控制、恢复和调查网络安全事件&#xff0c;确保业务连续性和数据安全。以下是一个详细的网络安全应急处理流程&#xff1a; 1. 准备阶段 目标&#xff1a;建立和维护…

【算法入门-栈】逆波兰表达式求值

&#x1f4d6;逆波兰表达式求值 ✅描述✅扩展&#xff1a;什么是逆波兰表达式✅题解方法一&#xff1a;栈✅题解方法二&#xff08;数组模拟栈&#xff09; 今天又刷了一道题&#xff0c;奥利给 刷题地址&#xff1a; 点击跳转 ✅描述 给定一个逆波兰表达式&#xff0c;求表达…

[图解]SysML和EA建模住宅安全系统-09-流程指南·分析系统需求

1 00:00:00,560 --> 00:00:01,230 下一个图 2 00:00:01,320 --> 00:00:07,490 就是图17.14&#xff0c;分析系统需求这个活动 3 00:00:11,740 --> 00:00:14,350 这个图&#xff0c;它同样是以活动 4 00:00:14,360 --> 00:00:16,830 和活动图的方式来表达的 5 0…