JAVA:安全证书-公钥加密,私钥解密示例程序(转)

原址(http://blog.youkuaiyun.com/nimmy/article/details/5490990)

 

import java.io.FileInputStream;
import java.security.KeyStore;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.cert.Certificate;
import java.security.cert.CertificateFactory;

import javax.crypto.Cipher;

public class KeytoolPublicKeyPrivateKey {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		/* 前提:JDK已安装且正确配置环境变量
		 首先在D盘建立目录 test,用来存放证书库以及导出的证书文件,然后在命令行执行下列2句
		 下句含义:在D盘目录创建 test 密钥库,库密码 123456789 ,创建证书 test :非对称密钥,RSA
		 算法,key密码为qwertyuiop ,存于 test.keystore
		 C:\Users\Administrator> keytool -genkey -alias test -dname "CN=127.0.0.1"  -keyalg RSA -keystore test -storepass 123456789 -keypass qwertyuiop
		 下句含义:将 test 库中的 test 导出为证书文件 test.cer ,这里可能需要将 export
		 C:\Users\Administrator> keytool -export -alias test -file test.cer  -keystore test.keystore -storepass 123456789
		 证书库证书保存证书的公私钥,导出的证书文件只携带公钥*/
		byte[] msg = "犯大汉天威者,虽远必诛!".getBytes("UTF8"); // 待加解密的消息

		// 用证书的公钥加密
		CertificateFactory cff = CertificateFactory.getInstance("X.509");
		FileInputStream fis1 = new FileInputStream("d://test.cer"); // 证书文件
		Certificate cf = cff.generateCertificate(fis1);
		PublicKey pk1 = cf.getPublicKey(); // 得到证书文件携带的公钥
		Cipher c1 = Cipher.getInstance("RSA/ECB/PKCS1Padding"); // 定义算法:RSA
		c1.init(Cipher.ENCRYPT_MODE, pk1);
		byte[] msg1 = c1.doFinal(msg); // 加密后的数据

		// 用证书的私钥解密 - 该私钥存在生成该证书的密钥库中
		FileInputStream fis2 = new FileInputStream("d://test.keystore");
		KeyStore ks = KeyStore.getInstance("JKS"); // 加载证书库
		//输入keystore密码就是证书的证书库密码,主密码就是证书密码
		char[] kspwd = "123456789".toCharArray(); // 证书库密码
		char[] keypwd = "qwertyuiop".toCharArray(); // 证书密码
		ks.load(fis2, kspwd); // 加载证书
		PrivateKey pk2 = (PrivateKey) ks.getKey("test", keypwd); // 获取证书私钥
		fis2.close();
		Cipher c2 = Cipher.getInstance("RSA/ECB/PKCS1Padding");
		c2.init(Cipher.DECRYPT_MODE, pk2);
		byte[] msg2 = c2.doFinal(msg1); // 解密后的数据

		// 打印解密字符串 - 应显示 犯大汉天威者,虽远必诛!
		System.out.println(new String(msg2, "UTF8")); // 将解密数据转为字符串
		
	}

}
 
java(sm2公私钥生成、加签、验签、加密、解密) java(sm2公私钥生成、加签、验签、加密、解密)demo案列 立即下载

相关推荐

电机系列(1) - foc最基本原理、clark变换 、park变换、附代码

什么是FOC? FOC(Field-Oriented Control),直译是磁场定向控制,也被称作矢量控制 (VC,Vector Control) ,是目前无刷直流电机(BLDC)和永磁同步电机(PMSM)高效控制的最优方法之一。FOC旨在通过精确地控制磁场大小与方向,使得电机的运动转矩平稳、噪声小、效率高,并且具有高速的动态响应。 简单来说就是,FOC是一种对无刷电机的驱动控制方法,它可以让我们对无刷电机进行 “像素级” 控制,实现很多传统电机控制方法所无法达到的效果。 因为所谓的“矢量控制”其实就是

nepqiu的博客 7万+

Java安全——密钥和证书

java安全中的密钥和证书说明

多头注意力探索Now 2220

从PSDK到ROS节点:实战GPS数据发布与CMake配置

本文详细介绍了如何从大疆PSDK获取GPS数据并封装为ROS节点的实战过程,包括PSDK编译、GPS数据订阅、ROS节点实现及CMake配置优化。通过具体代码示例和调试技巧,帮助开发者快速实现无人机传感器数据与ROS系统的集成,提升开发效率。

weixin_30843605的博客 458

国密sm2公钥加密 私钥解密java代码实现

国密 sm2公私钥加解密工具类 生成秘钥对

weixin_51613454的博客 1万+

瑞芯微RK3568与RK3566芯片选型指南:从接口差异到应用场景深度解析

在嵌入式系统与边缘计算领域,芯片选型是决定产品成败的关键一步。其核心在于理解芯片的架构、接口扩展能力与系统可靠性之间的平衡。以瑞芯微(Rockchip)的RK3568和RK3566为例,这两款同为四核A55架构的芯片,在基础算力上相近,但其面向的应用赛道却因接口配置而截然不同。RK3568凭借其双千兆网口、PCIe 3.0高速接口以及全链路ECC内存支持,在技术价值上更侧重于构建高可靠、高扩展性的系统,如边缘计算网关、工业控制器和网络视频录像机(NVR)。相比之下,RK3566则以其精简的接口配置,精准服务

weixin_33314040的博客 480

手把手教你学Simulink——基于Simulink的电压型 vs 电流型整流器性能对比

摘要:本文基于Simulink平台对比分析了电压型整流器(VSR)和电流型整流器(CSR)的性能差异。VSR采用电容滤波,具有高功率因数(PF>0.99)、低输入电流THD(<3%)等优势,但动态响应较慢;CSR采用电感滤波,动态响应快(<0.05s),但THD较高(5%~8%)。研究建立了统一测试平台,详细对比了两者在稳态性能、动态响应、效率等方面的差异,并给出了控制算法实现和参数优化建议。通过量化分析,为电力电子工程师提供了拓扑选型依据,可根据恒压/恒流需求选择最优方案,有效缩短开发周

MHD0815的博客 173

Java代码实现非对称加密RSA

非对称加密算法实现机密信息的交换过程为:甲方生成一对密钥并将其中一个作为公钥向其他方公开;得到该公钥的乙方使用该密钥对机密信息进行加密后发送给甲方;甲方再用自己的另一个专用密钥对加密后的信息进行解密,非对称加密拥有两把密钥。非对称加密算法中,生成两个密钥一个公钥和一个私钥。它们是一对要搭配使用,如果用公钥进行加密,只有用对应的私钥才能解密;如果用私钥进行加密,只有用对应的公钥才能解密。话不多说直接上代码!

HmmHmmH的博客 287

YOLO模型部署RK3588多核NPU并行加速完整教程:基于线程池的高性能AI推理实现

本教程详细介绍了如何在RK3588平台上实现多核NPU并行加速的AI推理方案。RK3588搭载3个独立NPU核心,总算力达6TOPS,支持单核、双核和三核三种工作模式。文章深入解析了NPU硬件架构特点,包括核心独立处理能力、内存带宽分配及多核心协作机制,并提供了C++代码示例展示核心负载均衡、任务调度和内存优化策略。通过线程池技术可以有效利用多核NPU并行计算能力,显著提升AI推理性能,特别适合高并发场景。教程还包含内存子系统的瓶颈分析和性能预估方法,为开发者提供完整的优化思路。

LXY_LOVE36的博客 797

java 公钥证书加密,JAVA:安全证书 公钥加密,私钥解密示例程序

import java.io.FileInputStream;import java.security.KeyStore;import java.security.PrivateKey;import java.security.PublicKey;import java.security.cert.Certificate;import java.security.cert.CertificateF...

weixin_35515918的博客 949

word多级列表为什么会变成黑块解决思路

今天在写文档时,发现WORD5级的标题都变黑块了,找了度娘的资料,终于解决了。 第一种 1、光标bai放在黑快的右边,按向左的箭头,然后ctrl+shift+s,点击重新应用。 2、点击“定义新的多级列表”(不知道从哪儿找这个按钮的百度下),直接点确定。 3、这里很重要!!!不要直接保存,而是直接关掉word,会提示保存还是不保存,这个地方再点击保存。 第二种 Word2016 使用宏代码修复方法 1.找到视图-宏,打开 查看宏 2.创建宏 3.贴...

霍力强的专栏 8582

【车载以太网】【架构】整体架构与协议标准

车载以太网架构图 应用层:DHCP /SOMEIP/DoIP/XCP/UDPNM 传输层:TCP/IP 网络层:IPv4/IPv6/ARP/ICMP 链路层:IEEE Ethernet MAC+VLAN 物理层:Ethernet PHY: 100BASE-T1/1000BASE-T1/100BASE-Tx

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 8358

JAVA:安全证书-公钥加密,私钥解密示例程序

import java.io.FileInputStream;import java.security.KeyStore;import java.security.PrivateKey;import java.security.PublicKey;import java.security.cert.Certificate;import java.security.cert.Certific

nimmy的专栏 7344

【四足机器人项目实战】四足机器人嵌入式硬件设计

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、电源管理板设计及制作二、通讯中继板设计及制作三、力控无刷电机驱动板设计及制作1.磁场定向控制FOC控制原理2.电机转子位置、速度检测原理3.硬件CAN通讯原理 前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对四足机器人–嵌入式硬件设计做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章 提示:以下是本篇文章正文内容 一、电

qq_35635374的博客 1万+

java怎样加密文件,如何用Java加密或解密文件?

我想用Java加密和解密文件,我已经阅读了这个URL http://www-users.york.ac.uk/~mal503/lore/pkencryption.htm,我得到了两个文件,即公共安全证书和私有安全证书文件和private.pem文件,我将这些文件复制并粘贴到当前目录中,并按如下所示编写Java代码,当我运行此文件时,未执行任何加密或解密操作,请查看并告诉我我哪里出了错加密代码Fil...

weixin_29295541的博客 260

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

JAVAEE—HTTPS和ssl证书

HTTPS 也是一个应用层协议. 是在 HTTP 协议的基础上引入了一个加密层.HTTP 协议内容都是按照文本的方式明文传输的. 这就导致在传输过程中出现一些被篡改的情况而HTTPS则是新采用加密的方式进行传输首先什么是对称密钥呢?我们还是以上面为列,慈溪太后在拿到这张内容的时候要用破洞的纸对信的内容做解密,那么传给他这封信的那个人,在写下这个内容的时候是不是也需要用这张破洞的纸把自己想要写的内容写在这个洞对应的位置下啊?

m0_72433000的博客 1350

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【ARM 安全系列介绍 3.4 -- 安全证书介绍】

第一种是报网络安全专业,现在叫网络空间安全专业,主要专业课程:程序设计、计算机组成原理原理、数据结构、操作系统原理、数据库系统、 计算机网络、人工智能、自然语言处理、社会计算、网络安全法律法规、网络安全、内容安全、数字取证、机器学习,多媒体技术,信息检索、舆情分析等。第二种是自学,就是在网上找资源、找教程,或者是想办法认识一-些大佬,抱紧大腿,不过这种方法很耗时间,而且学习没有规划,可能很长一段时间感觉自己没有进步,容易劝退。一个 DER 格式的证书通常无法在文本编辑器中打开,因为它是二进制编码的。

m0_59598029的博客 1235

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

加解密算法分析与应用场景

散列函数(又称信息摘要算法)是一种将任意长度的输入数据映射到固定长度输出的算法。输入敏感:输入数据的任何微小变化都会导致输出结果的巨大变化。唯一性:对于不同的输入数据,散列函数的输出结果几乎不会相同。不可逆性:从输出结果无法直接推导出输入数据。耗时性:计算散列值需要一定的计算时间。消息认证码(MAC)是一种加密算法,用于验证消息的完整性和来源。MAC算法通常基于对称加密算法(如AES、DES或3DES)或哈希函数(如SHA-256、SHA-3或HMAC)生成。

1411

网上银行安全证书工作原理

网上银行安全证书工作原理 何谓数字证书?   数字证书是一个经证书认证中心(CA)数字签名的包含公开密钥拥有者信息以及公开密钥的数据文件。认证中心的数字签名可以确保证书信息的真实性,用户公钥信息可以保证数字信息传输的完整性,用户的数字签名可以保证数字信息的不可否认性。   数字证书是各类终端实体和最终用户在网上进行信息交流及商务活动的身份证明,在电子交易的各个环节,交易的各方都需验证对方数字...

kekezhangshao的博客 988

大厂必备的加解密算法分析与应用场景

在日常开发中,无论是使用何种编程语言,我们都会遇到加解密的需求。例如,为了保护接口数据安全,我们需要对数据进行加密传输;在HTTPS协议中,通过非对称加密传输客户端私钥,然后双方使用该私钥进行对称加密通信;使用MD5算法进行文件一致性校验等。

1983

java实现安全证书相关操作

https://blog.csdn.net/zhushanzhi/article/details/77864516 版权声明:本文为博主原创文章,未经博主允许不得转载。 [java]view plaincopy packagetest; importjava.io.ByteArrayOutputStream; import...

weixin_33859231的博客 800

Java 网络编程 —— 安全网络通信

SSL(Secure Socket Layer,安全套接字层)是一种保证网络上的两个节点进行安全通信的协议。Task Force)国际组织对 SSL 作了标准化,制定了 RFC2246 规范,并将其称为传输层安全(Transport LayerSSL 和 TLS 都建立在 TCP/IP 的基础上,一些应用层协议,如 HTTP 和 IMAP,都可以采用 SSL 来保证安全通信。建立在 SSL协议上的 HTTP 被称为 HTTPS 协议。

m0_59598029的博客 1252

Https-对称加密与非对称加密-Java实现

昨天接到上海一家的面试电话,问了我https协议的工作流程,我模糊的记得公钥加密与私钥解密,其实还有协议协商,非对称加密与对称加密这些要点,今天就打算,实现一下这些加密的过程。 Https协议的工作流程 1、协议协商 第一步: Https请求发送的服务器端,包括Http请求和客户端支持的SSL协议。 第二步: 服务器端会以安全证书的发送形式,传输经选择与客户端所支持的SSL协议,还包括加密的公钥。 2、传输阶段 第三步: 客户端收到服务器端发来的安全证书,就会检验是否符合CA机构证书的规范,如果不符合拒绝。

EndlessJF的博客 600

【加密与解密】【07】SSL安全套件全解析

以上案例,都是通过KeyStore来实现KeyManager和TrustManager的管理功能现在我们不用KeyStore,通过自定义规则,来实现秘钥管理和证书验证功能我们以OkHttp框架为例现在我们用OkHttp来替换上面的HttpClient来访问服务器.url(url).get().build()这里我们为了演示,不让问题复杂化,只是简单地信任了所有的证书,并不能起到实际的安全作用。

天天向上 Up Up Up (*^▽^*) 2798

java实现PEKS_数字签名Java实现小记

一个证书发放单位给的证书里面包括一个发送单位的公钥,当前用户的一个私钥,公钥可用 Certificate certificate = getCertificate(certificatePath); PublicKey key = certificate.getPublicKey(); 的方法直接获取。私钥需要提交读取密钥库用到的读取密钥和alias名称,KeyStor...

weixin_39593247的博客 261

HTTPS通信过程详解

我们知道普通的Http协议通信是没有对传输数据进行加密,数据在传输过程中很容易被窃取,特别是敏感信息,为了造成不必要的损失我们可以采用HTTPS协议。首先介绍我们的网站怎么启用HTTPSNginx配置HTTPS默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译时指定–with-http_ssl_module参数,安装模块依赖于OpenSSL库和一些引用文件,通常这些文件并不在同一个软件包中

路漫漫,水迢迢 5306
上一篇: java 检查本地cer证书(转)
下一篇: 常见证书格式和转换(转)
_frank
博客等级 码龄17年 8粉丝 403原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值