使用hutool工具生成非对称加密公私密钥以及使用案例

1.导入hutool依赖

  <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.18</version></dependency>

2.直接复制代码

package com.common.utils;import cn.hutool.core.codec.Base64;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.asymmetric.AsymmetricAlgorithm;
import cn.hutool.crypto.asymmetric.KeyType;
import cn.hutool.crypto.asymmetric.RSA;import java.security.KeyPair;
import java.util.LinkedList;/*** 非对称加密工具类** @author edimen*/
public class AsymmetricAlgorithmUtil {/*** 公钥加密(解密就要用到对应的私钥)** @param msg    明文信息* @param pubKey 公钥,用来加密明文* @return*/public static String encryptByPublic(String msg, String pubKey) {RSA rsa = new RSA(AsymmetricAlgorithm.RSA_ECB_PKCS1.getValue(), null, pubKey);return rsa.encryptBase64(msg, KeyType.PublicKey);}/*** 私钥解密** @param encryptMsg 公钥加密的密文* @param priKey     私钥,用来解密密文* @return*/public static String decryptByPrivate(String encryptMsg, String priKey) {RSA rsa = new RSA(AsymmetricAlgorithm.RSA_ECB_PKCS1.getValue(), priKey, null);return rsa.decryptStr(encryptMsg, KeyType.PrivateKey);}/*** 私钥加密(解密就要用到对应的公钥)** @param msg    明文信息* @param priKey 私钥,用来加密明文* @return*/public static String encryptByPrivate(String msg, String priKey) {RSA rsa = new RSA(AsymmetricAlgorithm.RSA_ECB_PKCS1.getValue(), priKey, null);return rsa.encryptBase64(msg, KeyType.PrivateKey);}/*** 公钥解密** @param encryptMsg 密文* @param pubKey     公钥,用来解密* @return*/public static String decryptByPublic(String encryptMsg, String pubKey) {RSA rsa = new RSA(AsymmetricAlgorithm.RSA_ECB_PKCS1.getValue(), null, pubKey);return rsa.decryptStr(encryptMsg, KeyType.PublicKey);}/*** 获取公私钥集合** @return*/public static LinkedList<String> getPriKeyAndPubKey() {KeyPair pair = SecureUtil.generateKeyPair("RSA");String privateKey = Base64.encode(pair.getPrivate().getEncoded());String publicKey = Base64.encode(pair.getPublic().getEncoded());LinkedList<String> keys = new LinkedList<>();keys.add(privateKey);keys.add(publicKey);return keys;}
}

3.测试案例

    public static void main(String[] args) {LinkedList<String> priKeyAndPubKey = AsymmetricAlgorithmUtil.getPriKeyAndPubKey();String privateKey = priKeyAndPubKey.get(0);String publicKey = priKeyAndPubKey.get(1);String text = "HelloWorld";String encryptByPublic = AsymmetricAlgorithmUtil.encryptByPublic(text, publicKey);System.out.println(encryptByPublic);String s = AsymmetricAlgorithmUtil.decryptByPrivate(encryptByPublic, privateKey);System.out.println("公钥加密私钥解密:"+s);String encryptByPrivate = AsymmetricAlgorithmUtil.encryptByPrivate(text, privateKey);System.out.println(encryptByPrivate);String s1 = AsymmetricAlgorithmUtil.decryptByPublic(encryptByPrivate,publicKey);System.out.println("私钥加密公钥解密:"+s1);}

4.运行结果图:

在这里插入图片描述

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

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

相关文章

仅需30秒完美复刻任何人的声音 - 最强AI音频11Labs

我的用词一直都挺克制的&#xff0c;基本不会用到“最强”这个字眼。 但是这一次的这个AI应用&#xff0c;是我认为在TTS&#xff08;文字转音频&#xff09;这个领域&#xff0c;当之无愧的“最强”。 ElevenLabs&#xff0c;简称11Labs。 仅需30秒到5分钟左右的极少的数据集…

机器学习-分类问题

前言 《机器学习-回归问题》知道了回归问题的处理方式,分类问题才是机器学习的重点.从数据角度讲,回归问题可以转换为分类问题的微分 逻辑回归 逻辑回归&#xff08;Logistics Regression&#xff09;,逻辑回归虽然带有回归字样&#xff0c;但是逻辑回归属于分类算法。但只可…

极大提升GPT-4等模型推理效率,微软、清华开源全新框架

随着用户需求的增多&#xff0c;GPT-4、Claude等模型在文本生成、理解、总结等方面的能力越来越优秀。但推理的效率并不高&#xff0c;因为&#xff0c;多数主流模型采用的是“顺序生成词”方法&#xff0c;会导致GPU利用率很低并带来高延迟。 为了解决这一难题&#xff0c;清…

美国Linux服务器的iptables防火墙介绍

美国Linux服务器防火墙一般分为硬件防火墙和软件防火墙&#xff0c;但不论是硬件防火墙还是软件防火墙&#xff0c;都需要通过使用硬件作为联机的介质&#xff0c;也需要使用软件来设定美国Linux服务器安全政策&#xff0c;因此可以从使用的硬件与操作系统来加以区分。硬件防火…

oracle怎么推进scn?

很多时候&#xff0c;数据库有故障打不开&#xff0c;需要用到推进scn的技术&#xff0c;这里介绍下12c及以上版本的oracle怎么推进数据库的scn。 经测试发现&#xff0c;数据库mount和open状态下都可以通过此方法推进SCN。 Session1&#xff1a; 查询当前SCN SQL> select c…

基于jsp+servlet的图书管理系统

基于jspservlet的图书管理系统演示地址为 图书馆后台管理系统 用户名:mr ,密码:123 图书馆管理系统主要的目的是实现图书馆的信息化管理。图书馆的主要业务就是新书的借阅和归还&#xff0c; 因此系统最核心的功能便是实现图书的借阅和归还。此外&#xff0c;还需要提供图书…

Stable Diffusion XL on diffusers

Stable Diffusion XL on diffusers 翻译自&#xff1a;https://huggingface.co/docs/diffusers/using-diffusers/sdxl v0.24.0 非逐字翻译 Stable Diffusion XL (SDXL) 是一个强大的图像生成模型&#xff0c;其在上一代 Stable Diffusion 的基础上主要做了如下优化&#xff1a;…

生产上线需要注意的安全漏洞

一、关闭swagger 1、关闭swagger v3 # 需同时设置auto-startupfalse&#xff0c;否则/v3/api-docs等接口仍能继续访问 springfox:documentation:enabled: falseauto-startup: falseswagger-ui:enabled: false 2、关闭swagger v2 # 只要不是true就不启用 swagger:enable: fa…

深度解读:淘客返利机器人无限制与免费版的差异

深度解读:淘客返利机器人无限制与免费版的差异 在数字时代&#xff0c;人工智能和大数据技术的飞速发展正在改变我们的生活方式&#xff0c;尤其在购物领域&#xff0c;各种优惠工具如雨后春笋般涌现。其中&#xff0c;淘客返利机器人和微赚淘客系统以其独特的优势&#xff0c…

Python核心编程之序列下篇

目录 十二、列表 如何创建列表类型数据并给它赋值 如何访问列表中的值

代立冬:基于Apache Doris+SeaTunnel 实现多源实时数据仓库解决方案探索实践

大家好&#xff0c;我是白鲸开源的联合创始人代立冬&#xff0c;同时担任 Apache DolphinScheduler 的 PMC chair 和 SeaTunnel 的 PMC。作为 Apache Foundation 的成员和孵化器导师&#xff0c;我积极参与推动多个开源项目的发展&#xff0c;帮助它们通过孵化器成长为 Apache …

如何访问内部网络做内网穿透

项目&#xff1a;https://github.com/ehang-io/nps 有个公网服务器&#xff0c;搭建服务端。 然后客户端使用&#xff1a; -server是服务端的访问方式。-vkey是秘钥。 ./npc -server192.227.19.12:8024 -vkeyoies8gq3wml -typetcp然后在服务端配置TCP隧道即可。

某度旋转验证码v2 逆向分析

v2主要依据是核心 JS 文件mkd_v2.js 版本&#xff0c;如下图所示&#xff1a; 第一次 https://passport.baidu.com/cap/init 接口&#xff0c;请求的 ak 是固定值&#xff0c;当然不同场景不同网站是不一样的&#xff0c;_ 时间戳&#xff0c;ver1&#xff0c;返回值 as、tk 都…

大数据的技术栈-逐步完善

目录 1.hadoop a.HDFS分布式文件系统 b.Yarn集群资源管理器 c.MapReduce sql引擎 d.Impala sql引擎 e.工具概观 2.数据仓库知识 a.Hive数据库 1)Hive Sql 2)数据库结构 b.Doris数据库 3.混合处理框架SPARK a.Spark b.集群架构 4.数仓模型知识 5.开发工具 a.Dbeaver b.Idea…

android项目实战之使用框架 集成多图片、视频的上传

效果图 实现方式&#xff0c;本功能使用PictureSelector 第三方库 。作者项目地址&#xff1a;https://github.com/LuckSiege/PictureSelector 1. builder.gradle 增加 implementation io.github.lucksiege:pictureselector:v3.11.1implementation com.tbruyelle.rxpermissio…

线性回归实战

3.1 使用正规方程进行求解 3.1.1 简单线性回归 公式 &#xff1a; y w x b y wx b ywxb 一元一次方程&#xff0c;在机器学习中一元表示一个特征&#xff0c;b表示截距&#xff0c;y表示目标值。 使用代码进行实现&#xff1a; 导入包 import numpy as np import matp…

中缀表达式转后缀表达式与后缀表达式计算(详解)

**中缀表达式转后缀表达式的一般步骤如下&#xff1a; 1&#xff1a;创建一个空的栈和一个空的输出列表。 2&#xff1a;从左到右扫描中缀表达式的每个字符。 3&#xff1a;如果当前字符是操作数&#xff0c;则直接将其加入到输出列表中。 4&#xff1a;如果当前字符是运算符&a…

QNX usleep测试

QNX usleep测试 结论 usleep时间在QNX上没有ubuntu上运行准确&#xff0c;但是10ms以上误差不大。 测试代码 testsleep.cpp的代码如下&#xff1a; #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <time.h>double usleep_…

sklearn 笔记:neighbors.NearestNeighbors 自定义metric

1 数据 假设我们有这样的一个数据tst_lst&#xff0c;表示的是5条轨迹的墨卡托坐标&#xff0c;我们希望算出逐点的曼哈顿距离之和&#xff0c;作为两条轨迹的距离 [array([[11549759.51313693, 148744.89246911],[11549751.49813359, 148732.97804463],[11549757.620705…

Linux 常用命令汇总

1 linux定时任务 查看定时任务&#xff1a;crontab -l 每晚一点半执行定时任务&#xff1a; 30 1 * * * sh /var/lib/pgsql/pg_db_backup.sh >> /var/lib/pgsql/pg_db_backup.log 2>&1 配置定时任务&#xff1a;crontab -e 2 linux 内核版本查询 cat /etc/r…