`
javaEEdevelop
  • 浏览: 876318 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

原址(http://blog.csdn.net/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加密算法-公钥加密私钥解密

    公钥加密和私钥解密是一种非对称加密技术,它允许数据在不安全的环境中安全传输。本主题将深入探讨Java如何实现这种机制,以及其在客户端与服务器交互中的应用。 1. **公钥加密原理** 公钥加密是一种双钥加密系统...

    Java 公钥和私钥加密解密代码

    在Java编程语言中,公钥和私钥加密解密是一种重要的安全技术,广泛应用于网络通信、数据传输等领域。本文将详细解析如何使用Java实现公钥和私钥的加解密操作,以及相关的关键概念和代码示例。 首先,我们要了解公钥...

    Java公钥加密私钥解密.rar

    这个名为"Java公钥加密私钥解密.rar"的压缩包文件包含了一个使用Java实现的公钥/私钥加密解密的示例。在这个案例中,开发者可能使用了Java的Java Cryptography Extension (JCE) 来实现RSA算法,这是一种非对称加密...

    RSA算法JAVA公钥加密,C#私钥解密

    在这个示例中,"RSA加密"的压缩包可能包含了Java和C#的完整源代码,用于演示如何在两者之间实现RSA公钥加密和私钥解密的过程。开发者可以通过运行这些示例代码,理解并应用RSA加密解密技术到自己的项目中。

    RAS公钥加密私钥解密

    总结来说,RSA公钥加密私钥解密机制提供了数据安全传输的基础,结合Java和JavaScript的实现,可以在各种Web服务和应用程序中确保敏感信息的安全。正确理解和使用这些技术对于保障网络安全至关重要。

    RSA生成公钥私钥和使用公钥私钥加密解密demo

    - `decrypt(byte[] ciphertext, PrivateKey privateKey)`: 使用私钥解密密文。 - `saveKeys(PublicKey publicKey, PrivateKey privateKey, String fileName)`: 保存公钥和私钥到文件。 - `loadKeys(String ...

    非对象加密算法-rsa加解密 公钥加密私钥解密

    这一对密钥有着不同的职责,公钥用于加密信息,而私钥则用于解密,两者之间存在数学上的联系,但又难以从公钥推导出私钥。 在互联网通信中,RSA算法的应用非常广泛。例如,在发送敏感信息时,如电子邮件或金融数据...

    java语言 RSA公钥加密,私钥解密

    总的来说,RSA公钥加密和私钥解密是Java和Android开发中保障信息安全的重要手段,通过理解其工作原理和使用方法,开发者可以有效地保护应用程序中的敏感信息。在实际应用中,还应结合其他安全措施,如HTTPS传输、...

    JavaRSA生成公钥私钥加解密

    在这个Java RSA项目中,可能包含了一个完整的示例程序,演示如何生成公钥私钥,并进行加解密操作。这有助于理解非对称加密的工作原理,特别是在区块链等应用中,多重加密技术可能会结合RSA与其他加密方法,提供更高...

    java签名私钥加密公钥解密

    Java签名私钥加密和公钥...在理解了这些基本概念后,开发者可以在Java应用程序中实现安全的私钥加密和公钥解密功能,以保护数据的安全并验证消息的来源。这在诸如网络通信、文件传输、数字证书等领域都有着广泛的应用。

    asp.net RSA 私钥加密公钥解密 能解 php Java 实现RSA加密互通

    首先,RSA是一种基于大素数因子分解困难性的公钥加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出。它的核心在于一对密钥:公钥和私钥。公钥可以公开,用于加密数据;私钥则需要保密,用于解密数据...

    Java实现的RSA加密解密算法示例

    RSA算法基于大数分解难题的原理,使用公钥加密、私钥解密的方式实现信息的加密和解密。 知识点2:Java中RSA加密解密算法的实现 在Java中,可以使用Java Cryptography Architecture(JCA)来实现RSA加密解密算法。...

    C#RSA加密与JAVA解密,实现相互通信

    发送方使用接收方的公钥对数据加密,而接收方则使用自己的私钥解密。由于公钥可以公开,因此发送方无需担心密钥的安全问题。 在C#环境中,我们可以使用.NET框架提供的`System.Security.Cryptography....

    本地证书实现数字信封加解密demo-java

    这个"本地证书实现数字信封加解密demo-java"项目提供了一种使用Java来实现这一技术的示例。以下是对这个项目及其相关知识点的详细说明: **数字信封:** 数字信封是一种用于安全传输数据的技术,它结合了对称加密和...

    Java 生成RSA密钥进行数据加密解密 支持超长字符分区

    这种机制使得只有持有私钥的一方才能解密由公钥加密的数据,从而确保数据的安全性。 首先,要生成RSA密钥对,可以使用Java的`java.security.KeyPairGenerator`类。以下是一个简单的示例: ```java import java....

    RSA2--》加签+加密+解密+验签

    2. **RSA公钥加密**: 加密过程是通过接收方的公钥对原始明文进行处理。在Java中,`javax.crypto.Cipher`类用于执行加密操作。我们需要先用公钥初始化Cipher,然后将明文数据传递给Cipher进行加密,得到的密文只能...

    Java学习~实现输入字符的加密与解密

    - 非对称加密则需要分别用公钥加密和私钥解密。 6. **示例代码片段:** ```java import javax.crypto.Cipher; import java.security.Key; // 对称加密 Key key = ...; // 创建密钥 Cipher cipher = Cipher....

    Java公钥加密算法RSA.rar

    Java公钥加密算法RSA是一种广泛应用于网络通信中的安全技术,主要基于数学问题的难度来确保数据的安全性。RSA,由其发明者Ron Rivest、Adi Shamir和Leonard Adleman的名字首字母组成,是一种非对称加密算法,这意味...

    基于RSA的公钥加密 信息安全java实现

    1. **实验源码**:Java实现的RSA加密和解密的程序,包括密钥生成、加密、解密等关键函数的代码示例。 2. **实习报告**:详细记录了实验的过程、步骤以及可能遇到的问题和解决方案。报告可能涵盖了如何导入和使用Java...

    java 证书的加密与解密

    Java证书的加密与解密是Java安全领域中的一个重要概念,主要涉及到数字证书、公钥加密、私钥解密以及SSL/TLS协议等知识点。在这个主题中,我们将深入探讨这些概念及其在实际应用中的使用。 首先,Java证书是用于...

Global site tag (gtag.js) - Google Analytics