java公钥加密私钥解密_公钥加密,私钥解密示例程序(JAVA)详解

article/2025/9/25 6:42:32

fff6c98081bf8904098fb5e1bd59ff4b.gif

公钥与私钥机制属于非对称加密的范畴,非对称是相对于对称加密而言的,对称加密用于加密与解密的密钥是同一把,而非对称加密则用于加密与解密的密钥不相同,一个公开,称为公钥;一个保密,称为私钥,公钥与私钥必须成对出现,只有是配对的公钥与私钥才能用于加解密。公钥通过非安全通道发放,私钥则由发放者保留,公钥加密的数据,只能使用其配对的私钥对其解密;反之,私钥加密的数据,只可使用公钥对其解密。

对称加密出现后有效地提升的数据的安全性,但是由于加密与解密用的是同一把密钥,这样除了通信双方需要约定加密算法之外,数据发送方还需要将密钥发送给接收方,这为密钥的管理带来很大不便,为了弥补这一弱势,非对称加密算法就运而生。对于非对称加密来说,其公钥本身就是公开的,大家都知道,所以就不存在公钥管理的问题,只需要将私钥安全保存即可,这就为安全通信带来了极大的便利。

非对称加密算法与对象加密算法相比,密钥管理不复存在,在安全性上有着无法逾越的高度,但其加/解密效率却要比对称加密低得多,因此非对象加密算法往往应用在一些安全性要深圳市相当高的领域,如电子商务平台、银行网关、支付系统等。针对非对称加密算法低效的问题,很多情况下是将对称加密算法与非对称加密算法相结合,使用对称加密算法为数据加/解密,使用公钥与私钥为对象加密算法密钥加/解蜜。利用对称加密算法的高效性,加之非对象加密算法的密钥管理,提升整体加密系统的安全性。而且在算法的设计上,非对象加密算法对待加密数据长度还有着极为严苛的要求。例如,RSA算法要求待加密数据不得超过53个字节。基于上述原因,非对称加密算法主要用于交换对称加密算法与秘密密钥,而非数据交换。

下面是一个Java中使用公钥与私钥的例子:

package net.itxm.security;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.security.Key;

import java.security.KeyPair;

import java.security.KeyPairGenerator;

import java.security.PrivateKey;

import java.security.PublicKey;

import javax.crypto.Cipher;

import org.junit.Test;

public class KeyPairTest {

private static final String ALGOGRITHM = "RSA";

private static final String PUBLIC_KEY_PATH = "public.key";

private static final String PRIVATE_KEY_PATH = "private.key";

@Test

public void testGenerate() throws Exception {

//KeyPairGenerator引擎类用于产生密钥对,JDK(7)默认支持的算法有,DiffieHellman、DSA、RSA、EC

KeyPairGenerator generator = KeyPairGenerator.getInstance(ALGOGRITHM);

//产生密钥对

KeyPair keyPair = generator.generateKeyPair();

//获取公钥

PublicKey publicKey = keyPair.getPublic();

//获取私钥

PrivateKey privateKey = keyPair.getPrivate();

//将公钥与私钥写入文件,以备后用

writeKey(PUBLIC_KEY_PATH, publicKey);

writeKey(PRIVATE_KEY_PATH, privateKey);

}

@Test

public void testEncryptAndDecrypt() throws Exception {

Cipher cipher = Cipher.getInstance(ALGOGRITHM);

//读取私钥,进行加密

PrivateKey privateKey = (PrivateKey) readKey(PRIVATE_KEY_PATH);

cipher.init(Cipher.ENCRYPT_MODE, privateKey);

//加密

String sendInfo = "我的明文";

byte[] results = cipher.doFinal(sendInfo.getBytes());

//读取公钥,进行解密

PublicKey publicKey = (PublicKey) readKey(PUBLIC_KEY_PATH);

cipher.init(Cipher.DECRYPT_MODE, publicKey);

//解密

byte[] deciphered = cipher.doFinal(results);

//得到明文

String recvInfo = new String(deciphered);

System.out.println(recvInfo);

}

public void writeKey(String path, Key key) throws Exception {

FileOutputStream fos = new FileOutputStream(path);

ObjectOutputStream oos = new ObjectOutputStream(fos);

oos.writeObject(key);

oos.close();

}

public Key readKey(String path) throws Exception {

FileInputStream fis = new FileInputStream(path);

ObjectInputStream bis = new ObjectInputStream(fis);

Object object = bis.readObject();

bis.close();

return (Key) object;

}

}

在上面的例子中,保存公钥与私钥是直接通过对象序列化机制完成的,与秘密密钥一样,也可以获取编码后的二进制数据(Key.getEncoded())保存.

fff6c98081bf8904098fb5e1bd59ff4b.gif

转载请注明来源网站:www.itxm.cn谢谢!


http://chatgpt.dhexx.cn/article/pPsthtj0.shtml

相关文章

c#加密:四、公钥加密和签名

一、公钥加密 1、概述 公钥加密是非对称的,因此加密和解密需要使用不同的密钥。对称加密的密钥可以是一串长度合适的任意字节串。但非对称加密则需要专门制作一对密钥。 这个密钥对包含一个公钥和一个私钥。它们将一起完成如下工作: 公钥加密消息&#…

为什么用公钥加密却不能用公钥解密?

本文为掘金社区首发签约文章,14天内禁止转载,14天后未获授权禁止转载,侵权必究! 一直以来我都在逃避写HTTPS。 毕竟。 HTTPS里名词太多。概念又巨繁琐。 实在是太难解释了,能不写我尽量不写。。。。 但为了让图解网…

公钥加密算法

3 公钥加密算法 加密工具使用 运行RSA-Tool,点击Start按钮,滑动鼠标生成一个随机数。点击Generate生成一对大质数p、q及Npq。 自己选定一个可用的整数e(可使用默认的10001,也可以使用其他的)。点击Calc.D生成d。 3 将公钥(N,e)发送给小伙…

2021-05-05

5.5 实训主题:密码学(后续) 公钥加密算法 RSA算法的数学原理 阅读RSA.cpp中的代码,了解其实现方法。调试运行RSA.cpp,选择两个不同的素数。根据生成的d和e验证公式de ≡ 1 (mod (p-1)(q-1))。输入要加密的数。验证…

公钥密钥加密原理

转载自:https://www.jianshu.com/p/0bf1c3c047e5 第6章 网络编程与网络框架 6.1 公钥密钥加密原理 6.1.1 基础知识 密钥:一般就是一个字符串或数字,在加密或者解密时传递给加密/解密算法。对称加密算法:加密和解密都是使用的同…

公钥密码体制及RSA公钥加密算法(上)

一.公钥密码体制 (1)公钥(非对称)密码概述: 优点:免去密钥分发,密钥管理简单 (2)公钥加密的设计原则: 已知公私钥,进行加密解密是简单容易的 单…

网关与路由器的区别!!

自我认识: “网关” :让两个不同网络相互之间进行通信,可以使具有不同协议的网络相互连接。 “路由器”:能在计算机网络之间发送和接收数据包的设备,并且提供最佳路由路径的一种网络互联设备。但是只能在使用相同协议…

什么是网关和网关的作用

什么是网关? 网关(Gateway)指的是这一个网络连接到另一个网络的“关口”,它又称网间连接器、协议转换器。在Internet网里,网关的作用是一种连接内部网与Internet上其它网的一种中间设备,通俗来说,也叫做“路由器”。网关地址是能…

微服务——API网关

什么是API网关 API网关(API Gateway)是应用服务之前的系统,用来代理业务系统的服务API,在网关层处理所有的非业务功能,实现管理授权、访问控制和流量限制等功能。这样业务系统就可以专注于业务,而不用去处…

网关和路由器的区别

摘要:网关是逻辑概念,路由器是物理设备,路由器可以作为网关来使用。路由器是一个设备,而网关是一个结点(概念层)。应该说:路由器可以实现网关的功能。另外,网关的功能还可以由局域网中一台双网卡的机器&…

PowerBI Server端管理数据网关

作为企业PowerBI的管理员,日常工作除了分发报表,可能就是管理网关了,目前国际版的Server端已经更新了网关管理的页面,但是入口没变,仍然是设置—管理网关。 新建数据源 进入管理网关页面后,左上角有一个新…

守护企业网关

相比UTM、防毒墙等概念,用户关注的只是网关处如何确保网络安全以及对病毒攻击的拦截。 有一天,在一家大型外企工作的小王,利用午休空挡通过MSN将一个名为Dancing Skeleton的游戏小程序传给朋友分享,当消息发过去后,屏…

网关介绍

网关(Gateway)又称网间连接器、协议转换器。网关在网络层以上实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连。 网关是一种充当转换重任的计算机系统或设备。在使用…

微服务网关——需求篇

概念 API Gateway(API GW / API 网关),顾名思义,是企业 软件系统在系统边界上提供给外部访问内部接口服务的统一入口。网关并不是微服务所特有的,实际上网关在微服务之前就已经存在很久了,例如银行、证券等…

网关是什么?工业网关是什么?

网关是什么?工业网关是什么? 网关(Gateway)又称网间衔接器、协议转化器。网关在传输层上以完结网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关的结构也和路由器相似,不同的是互连层。网关既…

守护企业网关

相比UTM、防毒墙等概念,用户关注的只是网关处如何确保网络安全以及对病毒攻击的拦截。 有一天,在一家大型外企工作的小王,利用午休空挡通过MSN将一个名为Dancing Skeleton的游戏小程序传给朋友分享,当消息发过去后,屏…

B2B网关支付方案介绍

B2B网关支付方案介绍 目录 一、B2B网关概述 二、B2B网关方案 一、B2B网关概述 业务背景:近年来,随着互联网支付业务逐步进化,C端已成红海,而B端成为群蓝海。市场上普遍存在的对B端支付需求又得不到满足。 业务场景&#xff1a…

网关的简介

好想你 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 转自:https://www.cnblogs.com/coolfiry/p/8193768.html 一、API网关的…

路由器和网关的区别

转载自:https://blog.csdn.net/H12KJGJ/article/details/73436678 顾名思义,网关(Gateway)就是一个网络连接到另一个网络的“关口”。 按照不同的分类标准,网关也有很多种。TCP/IP协议里的网关是最常用的,在…

网关的选型方案

1. 选型场景描述 目前了解分析,将遇到的客户场景有三类: 极简私有化中高度私有云需求SaaS云端 极简私有化 :对企业数据敏感要求高,系统的使用率和性能要求低,因此设备资源提供也相对低。 极简私有化,适…