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

news2024/9/24 7:23:23

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

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

前端:使用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);
}

后端:使用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加解密网站推荐

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1915293.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

04OLED简介和调试方法

OLED简介和调试方法 调试方式串口调试显示屏调试其他调试方法总结&#xff1a; OLED简介硬件电路OLED驱动函数 keil调试模式进入方法keil调试界面窗口简单功能说明更加强大的功能 调试方式 电脑想看什么变量可以直接打印到屏幕&#xff0c;但是单片机很多时候由于成本和电路结构…

充电桩运营平台的技术方案 53页

充电桩运营平台的技术方案 53页&#xff0c;全套解决方案 内容太多&#xff0c;复制图片丢失&#xff0c;需要完整的私信我。

图片kb太大了怎么改小?修改图片kb的方法介绍

图片kb太大了怎么改小&#xff1f;将图片的文件大小&#xff08;以KB为单位&#xff09;缩小可以带来多种优点&#xff0c;但也有一些缺点需要注意。缩小图片文件大小可以显著减少它在硬盘或其他存储设备上占用的空间&#xff0c;使你能够存储更多的图片和其他文件。而且&#…

Postman使用教程【项目实战】

目录 引言软件下载及安装项目开发流程1. 创建项目2. 创建集合(理解为&#xff1a;功能模块)3. 设置环境变量&#xff0c;4. 创建请求5. 测试脚本6. 响应分析7. 共享与协作 结语 引言 Postman 是一款功能强大的 API 开发工具&#xff0c;它可以帮助开发者测试、开发和调试 API。…

制造业中SCADA与MES系统承担着怎样的重任?

SCADA&#xff08;Supervisory Control and Data Acquisition&#xff09;是一种广泛应用于工业控制系统中的监控和数据采集系统。它主要用于监控和控制工业过程中的设备和活动&#xff0c;并收集相关数据以供分析和优化。SCADA系统由人机界面&#xff08;HMI&#xff09;、数据…

提醒我每天打卡的“目标打卡提醒软件”

在繁忙的生活中&#xff0c;我们总有许多需要每日坚持的习惯&#xff0c;无论是为了健康而设定的减肥计划&#xff0c;还是为了工作而必须的每日上班打卡&#xff0c;亦或是为了自我提升而规定的每日学习任务。这些日常打卡活动&#xff0c;虽然重要&#xff0c;但在忙碌和疲惫…

罗马仕和西圣充电宝好用吗?西圣、倍思充电宝实测大PK!

随着智能设备在日常生活中的普及&#xff0c;充电宝成为了人们出行必备的数码配件。市场上充电宝品牌琳琅满目&#xff0c;其中罗马仕、西圣和倍思是较为知名的品牌。它们各自有着什么样的特点和优势呢&#xff1f;为了帮助大家更好地选择适合自己的充电宝&#xff0c;我们特意…

“我没钱”最好别用“I have no money“,老外很少这样说!成人学英语到柯桥泓畅学校

说到没钱都有话说&#xff0c;那我们怎么用英语表达&#xff1f;是不是直接说I have no money&#xff0c;老外表示很少这样说&#xff0c;那下面一起来拓展下&#xff1a; 老外如何地道表达“我没钱”&#xff1f; 当我们想表达“我没钱”时&#xff0c;很多人的第一反应就是…

opencv 中如何通过欧式距离估算实际距离(厘米)

1&#xff1a;这个方法个人测试觉得是正确的&#xff0c;误差较小&#xff0c;目前满足我当前的需求&#xff0c;如果方法不对&#xff0c;请大家评论&#xff0c;完善。 2&#xff1a;确保拍摄的参照物是垂直的&#xff0c;如果不垂直&#xff0c;就会有误差&#xff0c;不垂…

心电信号降噪前处理(MATLAB R2018)

心电信号降噪方法分析 &#xff08;1&#xff09;基线漂移的常用滤除法是拟合基线抵消法&#xff0c;此法先估计或提取信号基线&#xff0c;然后进行减法运算去掉信号中漂移成分&#xff0c;达到滤波的目的。抑制基线漂移的另一种方法是采用线性相位滤波器&#xff0c;因为基线…

什么是 GC Roots??一文带你看懂!!

什么是 GC Roots &#xff1f; JVM 是如何判断哪些对象应该回收&#xff0c;哪些应该保留呢&#xff1f;GC Roots 堆是一个巨大的对象集合&#xff0c;其中包含许多对象实例。 这些对象在堆中有不同的引用层次。一些接口会被频繁调用&#xff0c;每秒生成大量对象。这些对象之间…

【网络安全】实验七(ISA防火墙的规则设置)

一、实验目的 二、配置环境 1、打开两台虚拟机&#xff0c;并参照下图&#xff0c;搭建网络拓扑环境&#xff0c;要求两台虚拟机的IP地址要按照图中的标识进行设置&#xff0c;并根据搭建完成情况&#xff0c;勾选对应选项。注&#xff1a;此处的学号本人学号的最后两位数字&a…

MVC之 Controller 》》 ModelState ValidationMessageFor ValidationSummary

ModelState是Controller的一个属性&#xff0c;可以被继承自System.Web.Mvc.Controller的那些类访问。它表示在一次POST提交中被提交到服务器的 键值对集合&#xff0c;每个记录到ModelState内的值都有一个错误信息集。尽管ModelState的名字中含有“Model”&#xff0c;但它只有…

Monorepo仓库管理策略之 Lerna

这里写目录标题 前言&#xff1a;一、简介二、新建项目使用安装生成结构 三、复用现有项目执行命令查看包 四、配置package相互引用导入现有的包 五、发布包确定项目版本发布项目添加项目到到git发布包到NPM包发布出错解决方案 五、实例代码 前言&#xff1a; 将大型代码仓库分…

中国光储充一体化行业:有望成为全球能源转型的重要驱动力

光储充一体化系统&#xff0c;又称微电网解决方案&#xff0c;系一种整合分布式光伏能源、用电负载管理、配电设施以及监控与保护设备的自给型能源供应体系。该系统核心组件包括光伏发电系统、储能装置及充电站&#xff0c;其工作原理为&#xff1a;光伏发电系统捕获太阳能并转…

Floyd判圈算法——寻找重复数(C++)

287. 寻找重复数 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给定一个包含 n 1 个整数的数组 nums &#xff0c;其数字都在 [1, n] 范围内&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一个重复的整数。假设 nums 只有 一个重复的整数 &#xff0c;返…

系统分析师-基础知识

基础知识 一、计算机组成与结构1、计算机系统基础知识1.1 计算机硬件组成1.2 中央处理单元&#xff08;CPU&#xff09;1.3 数据表示1.3.1 R进制转十进制&#xff1a;1.3.2 十进制转R进制&#xff1a; 1.4 校验码&#xff08;3种校验码&#xff09;1.4.1 基本知识1.4.2 奇偶校验…

Security认证要点速记

登录校验流程 springSecurity已经为我们默认实现了一个用不着的登录功能&#xff0c;我们需要自己实现个符合我们需求的登录功能&#xff0c;所以我们需要去了解默认登录功能的流程&#xff0c;对其中的部分进行替换 SpringSecurity底层就是过滤器链&#xff0c;包含实现了各种…

滑动变阻器在实际应用中需要注意哪些安全事项?

滑动变阻器在实际应用中&#xff0c;为了确保其正常运作及保护电路安全&#xff0c;需要注意以下安全事项&#xff1a; 一、了解并遵守规格参数 最大电阻值和允许通过的最大电流值&#xff1a;使用前&#xff0c;必须清楚滑动变阻器的最大电阻值和允许通过的最大电流值&#x…

RISC-V异常处理流程概述(2):异常处理机制

RISC-V异常处理流程概述(2):异常处理机制 一、异常处理流程和异常委托1.1 异常处理流程1.2 异常委托二、RISC-V异常处理中软件相关内容2.1 异常处理准备工作2.2 异常处理函数2.3 Opensbi系统调用的注册一、异常处理流程和异常委托 1.1 异常处理流程 发生异常时,首先需要执…