当前位置: 首页 > news >正文

RSA加密算法(后端)

public class RSA {private static final String RSA_ALGORITHM = "RSA";/*** 生成RSA密钥对** @return RSA密钥对*/public static KeyPair generateKeyPair() throws NoSuchAlgorithmException {KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(RSA_ALGORITHM);keyPairGenerator.initialize(2048); // 密钥大小为2048位return keyPairGenerator.generateKeyPair();}/*** 使用公钥加密数据** @param data      待加密的数据* @param publicKey 公钥* @return 加密后的数据*/public static String encrypt(String data, PublicKey publicKey) throws Exception {Cipher cipher = Cipher.getInstance(RSA_ALGORITHM);cipher.init(Cipher.ENCRYPT_MODE, publicKey);byte[] encryptedData = cipher.doFinal(data.getBytes(StandardCharsets.UTF_8));return Base64.getEncoder().encodeToString(encryptedData);}/*** 使用私钥解密数据** @param encryptedData 加密后的数据* @param privateKey    私钥* @return 解密后的数据*/public static String decrypt(String encryptedData, PrivateKey privateKey) throws Exception {byte[] decodedData = Base64.getDecoder().decode(encryptedData);Cipher cipher = Cipher.getInstance(RSA_ALGORITHM);cipher.init(Cipher.DECRYPT_MODE, privateKey);byte[] decryptedData = cipher.doFinal(decodedData);return new String(decryptedData, StandardCharsets.UTF_8);}public static void main(String[] args) throws Exception {KeyPair keyPair = generateKeyPair();PublicKey publicKey = keyPair.getPublic();PrivateKey privateKey = keyPair.getPrivate();String data = "Hello World";String encryptedData = encrypt(data, publicKey);System.out.println("加密后的数据:" + encryptedData);String decryptedData = decrypt(encryptedData, privateKey);System.out.println("解密后的数据:" + decryptedData);}
}

相关文章:

RSA加密算法(后端)

public class RSA {private static final String RSA_ALGORITHM "RSA";/*** 生成RSA密钥对** return RSA密钥对*/public static KeyPair generateKeyPair() throws NoSuchAlgorithmException {KeyPairGenerator keyPairGenerator KeyPairGenerator.getInstance(RSA…...

挑战100天 AI In LeetCode Day08(热题+面试经典150题)

挑战100天 AI In LeetCode Day08(热题面试经典150题) 一、LeetCode介绍二、LeetCode 热题 HOT 100-102.1 题目2.2 题解 三、面试经典 150 题-103.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站,提供各种算法和数据结构的题目&…...

地铁机电设备健康管理现状及改善方法

轨道交通和我们的生活息息相关,从火车到地铁再到轻轨,给人们的出行带来了很大的便利。因此,保障轨道交通的的正常运行和安全至关重要,需要运维人员及时排查设备的问题,解决故障,保证轨道交通的安全运行。本…...

安卓NDK开发

1、jni:java native interface 作用:用于java代码和C、c代码的交互(代码混编); 分类使用:Jni静态注册、jni动态注册 2、静态注册 1).绑定java方法和C/C方法的方式之一; …...

高性能网络编程 - 解读5种I/O模型

文章目录 服务端处理网络请求流程图基础概念阻塞调用 vs 非阻塞调用同步处理 vs 异步处理阻塞、非阻塞 和 同步、异步的区别recvfrom 函数 五种I/O模型I/O模型1:阻塞式 I/O 模型(blocking I/O)I/O模型2:非阻塞式 I/O 模型(non-blocking I/O&a…...

复盘一个诡异的Bug

该Bug的诡异之处在于这是一个由多种因素综合碰撞之后形成的综合体。纵观整个排查过程,一度被错误的目标误导,花费大量功夫后才找到问题点所在,成熟的组件在没有确凿证据之前不能随意怀疑其稳定性。 前言 此前在接入两台粒径谱仪(…...

【uniapp】通用列表封装组件

uniapp页面一般都会有像以下的列表页面,封装通用组件,提高开发效率; (基于uView前端框架) 首先,通过设计图来分析一下页面展示和数据结构定义 w-table组件参数说明 参数说明类型可选值默认值toggle列表是…...

17 Linux 中断

一、Linux 中断简介 1. Linux 中断 API 函数 ① 中断号 每个中断都有一个中断号,通过中断号可以区分出不同的中断。在 Linux 内核中使用一个 int 变量表示中断号。 ② request_irq 函数 在 Linux 中想要使用某个中断是需要申请的,request_irq 函数就是…...

微信小程序真机调试连接状态一直在正常和未链接之间反复横跳?

背景:小程序真机调试的时候,发现真机的network不显示接口调用情况,控制台也没有输出内容。具体如下所示; 解决方法: 1、确保手机端连接的网络和微信开发者工具网络一致,比如用同一个WiFi 2、真机自动调试…...

最新Next 14快速上手基础部分

最新Next 14快速上手基础部分 最新的NEXT快速上手文档,2023.10.27 英文官网同步,版本Next14.0.0 本项目案例:GitHub地址,可以根据git回滚代码到对应知识,若有错误,欢迎指正! 一、介绍 1.什么是…...

【uniapp/uview】Collapse 折叠面板更改右侧小箭头图标

最终效果是这样的: 官方没有给出相关配置项,后来发现小箭头不是 uview 的图标,而是 unicode 编码,具体代码: // 箭头图标 ::v-deep .uicon-arrow-down[data-v-6e20bb40]:before {content: \1f783; }附一个查询其他 u…...

企业如何落地搭建商业智能BI系统

随着新一代信息化、数字化技术的应用,引发了新一轮的科技革命,现代化社会和数字化的联系越来越紧密,数据也变成继土地、劳动力、资本、技术之后的第五大生产要素,这一切都表明世界已经找准未来方向,前沿科技也与落地并…...

RedisTemplate连接密码设置教程

最近在一个项目中使用Redis保存Token时,出现连接Redis报错的情况 org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to localhos…...

基于SSM的二手车交易网站的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…...

温故知新:探究Android UI 绘制刷新流程

一、说明: 基于之前的了解知道ui的绘制最终会走到Android的ViewRootImpl中scheduleTraversals进行发送接收vsync信号绘制,在ViewRootImpl中还会进行主线程检测,也就是我们所谓子线程更新ui会抛出异常。 像我们常用的刷新ui,inval…...

设计模式-命令模式(Command)

设计模式-命令模式(Command) 一、命令模式概述1.1 什么是命令模式1.2 简单实现命令模式1.3 使用命令模式的注意事项 二、命令模式的用途三、命令模式实现方式3.1 使用匿名内部类实现命令模式3.2 使用Lambda表达式实现命令模式3.3 使用Java内置的函数式接…...

linux批量解压zip

方法一 1&#xff0c;创建unzip.sh #!/bin/bashwhile read line do unzip $linedone < filelist.txt #!/bin/bashwhile read line dounzip "$line" >& log & done < filelist.txt3. 在终端中执行以下命令 $ chmod x unzip.sh $ ./unzip.sh 这…...

HBase导出建表语句

HBase导出建表语句 HBase是一个面向大数据的分布式列存数据库&#xff0c;它以Hadoop作为底层存储和计算平台。在HBase中&#xff0c;数据以表的形式存储&#xff0c;每个表由行和列组成。本文将介绍如何使用HBase导出建表语句&#xff0c;并提供相应的代码示例。 HBase建表语…...

Linux环境配置(云服务器)

目录 1.第一步&#xff1a;购买云服务器 2.第二步&#xff1a;下载Xshell 7 3.第三步&#xff1a;打开Xshell&#xff0c;登录云服务器 4.第四步&#xff1a;更加便捷的云服务器登录方式 1.第一步&#xff1a;购买云服务器 &#xff08;推荐&#xff1a;阿里云、华为云、腾…...

【性能测试】Linux下Docker安装与docker-compose管理容器(超细整理)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、Linux下Docker…...

抖音批量下载器:三步搞定无水印视频批量下载

抖音批量下载器&#xff1a;三步搞定无水印视频批量下载 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批…...

告别内存焦虑:手把手教你用TPUv3高效训练ViT-G/14,20亿参数模型也能轻松跑起来

突破硬件限制&#xff1a;TPUv3实战ViT-G/14模型的20亿参数训练秘籍 当视觉Transformer模型参数突破20亿大关&#xff0c;单卡训练似乎已成为不可能完成的任务。但谷歌大脑团队用ViT-G/14的90.45% ImageNet准确率证明&#xff1a;通过精妙的架构调整和硬件适配&#xff0c;单TP…...

从零搭建VSCode下的PyQt5桌面开发工作流:集成Python、Qt Designer与高效调试

1. 为什么选择VSCodePyQt5开发桌面应用&#xff1f; 作为一个长期使用PyQt5开发桌面应用的老手&#xff0c;我尝试过各种开发环境组合&#xff0c;最终发现VSCodePyQt5是最适合个人开发者和小型团队的方案。你可能会有疑问&#xff1a;为什么不用PyCharm这样的专业Python IDE&…...

【架构解析】ResUnet实战:从零构建融合残差连接的图像分割模型

1. 为什么需要ResUnet&#xff1a;当图像分割遇上梯度消失 第一次用U-Net做医学图像分割时&#xff0c;我盯着训练曲线看了整整三小时——验证集指标像蜗牛爬坡&#xff0c;loss值下降得比树懒还慢。这就是典型的梯度消失症状&#xff0c;而残差连接正是解决这个问题的特效药。…...

别再复制粘贴了!手把手教你为VS2013配置OpenGL开发环境(附GLEW/GLUT文件整理技巧)

从零构建VS2013的OpenGL开发环境&#xff1a;文件管理与配置的艺术 第一次接触OpenGL开发时&#xff0c;面对GLEW、GLUT等依赖库的文件管理往往让人手足无措。本文将从一个实践者的角度&#xff0c;分享如何高效组织这些关键文件&#xff0c;避免常见的配置陷阱&#xff0c;打造…...

英雄联盟LCU API终极指南:League Akari工具包完整解析

英雄联盟LCU API终极指南&#xff1a;League Akari工具包完整解析 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari是一款基于英雄…...

17.3【保姆级教程】宏和函数的选择:时间与空间的权衡,新手不踩坑指南

&#x1f4e2; 专栏持续更新中&#xff01;关注博主不迷路&#xff0c;跟着专栏系统学C语言底层开发&#xff0c;从语法入门到工程实战&#xff0c;逐章拆解&#xff0c;保姆级讲解&#xff0c;刚入门的同学跟着学&#xff0c;全程零压力&#xff5e; 上一节我们详细掌握了 #de…...

GPT-image-2 硬核赋能!云微 AI 视频带货系统,源码部署 + 二次开发

一、GPT-image-2 引爆 AI 视频赛道&#xff0c;源码自主成核心竞争力2026 年 4 月&#xff0c;OpenAI 发布的GPT-image-2模型凭借自回归推理架构、2K 超清画质、中文精准渲染、人物高度一致性四大颠覆性能力&#xff0c;彻底解决传统 AI 视频画面崩坏、文字错乱、剧情割裂等痛点…...

智能体系统设计模式:从ReAct到多智能体协作

1. 智能体系统设计模式入门指南在构建基于人工智能的智能体系统时&#xff0c;设计模式的选择直接决定了系统的可靠性、可扩展性和可维护性。就像建筑设计师需要掌握结构力学原理一样&#xff0c;AI工程师也需要理解这些经过验证的设计范式。本文将带你系统掌握七种核心设计模式…...

手把手教你用STM32CubeMX配置SAI接口驱动MEMS数字麦克风(PDM转PCM实战)

STM32CubeMX实战&#xff1a;SAI接口驱动MEMS麦克风的PDM转PCM全流程解析 在智能语音设备爆发的时代&#xff0c;MEMS数字麦克风因其小尺寸、高信噪比和抗干扰能力成为嵌入式音频采集的首选。但许多开发者首次接触PDM信号转换时&#xff0c;常被时钟同步、滤波器设计等问题困扰…...