`
SwordShadow
  • 浏览: 270765 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java 证书的加密与解密

    博客分类:
  • java
阅读更多

证书,加密的相关知识可以参考阮一峰的密码学笔记数字签名是什么 

 

代码中使用的demo.p12使用jdk自带的keytool证书生成,私钥密码为123456

    

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

import javax.crypto.Cipher;

public class ReadP12Cert {
	@SuppressWarnings("unchecked")
	public static void main(String[] args) {
		final String KEYSTORE_FILE = "demo.p12";
		final String KEYSTORE_PASSWORD = "123456";
		try {
			KeyStore ks = KeyStore.getInstance("PKCS12");
			FileInputStream fis = new FileInputStream(KEYSTORE_FILE);
			char[] nPassword = null;
			if ((KEYSTORE_PASSWORD == null)|| KEYSTORE_PASSWORD.trim().equals("")) {
				nPassword = null;
			} else {
				nPassword = KEYSTORE_PASSWORD.toCharArray();
			}
			ks.load(fis, nPassword);
			fis.close();
			System.out.println("keystore type = " + ks.getType());
			Enumeration enuml = ks.aliases();
			String keyAlias = null;
			if (enuml.hasMoreElements()) {
				keyAlias = (String) enuml.nextElement();
				System.out.println("alias=[" + keyAlias + "]");
			}
			System.out.println("is key entry = " + ks.isKeyEntry(keyAlias));
			PrivateKey prikey = (PrivateKey) ks.getKey(keyAlias, nPassword);
			Certificate cert = ks.getCertificate(keyAlias);
			PublicKey pubkey = cert.getPublicKey();

			byte[] msg = "This is a demo!".getBytes("UTF8"); // 待加解密的消息
			Cipher c1 = Cipher.getInstance("RSA/ECB/PKCS1Padding"); // 定义算法:RSA
			c1.init(Cipher.ENCRYPT_MODE, pubkey);
			byte[] msg1 = c1.doFinal(msg); // 加密后的数据
			System.out.println("加密后的数据----"+new String(msg1, "UTF8"));
			Cipher c2 = Cipher.getInstance("RSA/ECB/PKCS1Padding");
			c2.init(Cipher.DECRYPT_MODE, prikey);
			byte[] msg2 = c2.doFinal(msg1); // 解密后的数据
			// 打印解密字符串
			System.out.println("解密后的数据----"+new String(msg2, "UTF8")); // 将解密数据转为字符串
			System.out.println(prikey.toString());
			System.out.println(pubkey.toString());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

 

  • cert.zip (2.8 KB)
  • 描述: 源码(含证书)
  • 下载次数: 112
分享到:
评论

相关推荐

    java公钥加密私钥解密数字证书

    java公钥加密私钥解密与数字证书,数字证书的生成看这里 http://hi.baidu.com/chenminliang/blog/item/2b30db24920ae0338744f9db.html

    JAVA 使用数字证书加密解密文件

    总结来说,Java结合RSA算法和数字证书提供了强大的文件加密解密解决方案。通过生成密钥对、创建和管理数字证书,以及使用`Cipher`进行加解密操作,可以确保数据的安全传输和存储。了解并掌握这些技术,对于开发安全...

    JAVA加密和解密的艺术(第二版).zip

    总的来说,这本书是Java开发者深入学习加密解密技术的宝贵资源,无论你是初学者还是有经验的开发者,都能从中受益匪浅,提升你在网络安全领域的专业技能。通过阅读这本书,你将能够更好地应对各种安全挑战,保护你的...

    java 证书 加密 解密

    Java证书加密解密是Java开发中涉及网络安全的重要环节,它主要涉及到数字证书、SSL/TLS协议、公钥加密和私钥解密等概念。在这个场景中,`Payment Mgr.p12`是一个PKCS12格式的文件,通常用于存储个人身份信息,包括...

    Java加密与解密的艺术.mobi

    综合应用篇既细致地讲解了加密技术对数字证书和SSL/TLS协议的应用,又以示例的方式讲解了加密与解密技术在网络中的实际应用,极具实践指导性。Java开发者将通过本书掌握密码学和Java加密与解密技术的所有细节;系统...

    JAVA加密与解密的艺术--第2版.rar

    本书是Java安全领域的百科全书,密码学领域的权威经典,4大社区一致鼎力...综合应用篇既细致地讲解了加密技术对数字证书和SSL/TLS协议的应用,又以示例的方式讲解了加密与解密技术在网络中的实际应用,极具实践指导性。

    Java加密与解密的艺术.rar 完整源代码

    通过学习这份"Java加密与解密的艺术"的源代码,你可以深入理解加密过程的实现细节,包括密钥的生成、加密解密流程、异常处理以及如何与其他Java安全组件集成。同时,你可以看到实际项目中如何使用这些概念,从而提升...

    Java加密与解密的艺术

    综合应用篇既细致地讲解了加密技术对数字证书和SSL/TLS协议的应用,又以示例的方式讲解了加密与解密技术在网络中的实际应用,极具实践指导性。, Java开发者将通过本书掌握密码学和Java加密与解密技术的所有细节;...

    Java加密与解密的艺术配书源代码源码整理

    源代码整理部分,`javaSrc175.zip`可能包含了与书中各个章节对应的示例代码,这些代码可以帮助读者更直观地理解和实现上述加密解密技术。下载并解压后,按照`下载及使用说明.txt`的指示,可以浏览和运行代码,加深对...

    JAVA使用数字证书加密文件

    在“JAVA使用数字证书加密文件”的主题中,我们聚焦于如何使用RSA算法结合数字证书对文件进行加密。RSA是一种非对称加密算法,它的安全性基于大数分解的困难性,因此在网络安全中被广泛应用。 首先,我们需要了解几...

    Java加密与解密的艺术 第二版(清晰+书签+完整版).pdf

    Java加密与解密的艺术 第二版(清晰+书签+完整版).pdf真正第二版,《Java加密与解密的艺术(第2版)》是Java安全领域公认的标杆之作,被奉为每一位Java开发工程师必读的著作之一。由资深专家撰写,第1版4年来畅销不...

    java 实现加密解密

    在Java编程语言中,实现加密和解密是安全领域中的重要任务,主要用于保护数据的隐私性和完整性。本文将深入探讨如何使用Java进行加密和解密操作,主要关注以下几个方面: 1. **加密算法理解** - **对称加密**:如...

    Java加密与解密的艺术含源码高清非扫描

    通过对《Java加密与解密的艺术》的学习,开发者不仅可以掌握Java中的加密解密技术,还能了解到如何在实际项目中应用这些技术,保护用户数据的安全,满足合规性要求,如欧盟的GDPR(通用数据保护条例)等。...

    java加密与解密的艺术全包括源码.rar

    本资源“java加密与解密的艺术全包括源码.rar”提供了全面的Java加密解密技术实现,涵盖了多种算法和应用场景。下面我们将深入探讨其中涉及的一些核心知识点。 1. **对称加密**:对称加密是最常见的加密方式,如DES...

    Java加密与解密的艺术配书源代码

    综合应用篇既细致地讲解了加密技术对数字证书和SSL/TLS协议的应用,又以示例的方式讲解了加密与解密技术在网络中的实际应用,极具实践指导性。Java开发者将通过本书掌握密码学和Java加密与解密技术的所有细节;系统...

    Java文件加密解密

    以下是一些关于如何使用Java实现文件加密解密的关键知识点: 1. **对称加密算法**:最常见的对称加密方法是AES(Advanced Encryption Standard),它使用相同的密钥进行加密和解密。Java提供了`javax.crypto`包来...

    Java 实现RSA 签名/验签与加密解密

    6. 压缩包中的`signature`文件可能包含的是一个示例程序,演示了如何在Java中使用RSA进行签名、验签、加密和解密。这个程序可能会包括以下关键部分: - 导入必要的安全库 - 创建并初始化`KeyPairGenerator` - ...

    Java加密与解密的艺术PDF

    通过学习《Java加密与解密的艺术》,开发者不仅可以掌握Java平台上的加密解密技术,还能提升网络安全意识,为开发安全的应用程序提供坚实的基础。同时,对于Java开发者来说,理解和应用这些加密技术也是提升专业技能...

Global site tag (gtag.js) - Google Analytics