证书,加密的相关知识可以参考阮一峰的密码学笔记和数字签名是什么
代码中使用的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(); } } }
相关推荐
java公钥加密私钥解密与数字证书,数字证书的生成看这里 http://hi.baidu.com/chenminliang/blog/item/2b30db24920ae0338744f9db.html
总结来说,Java结合RSA算法和数字证书提供了强大的文件加密解密解决方案。通过生成密钥对、创建和管理数字证书,以及使用`Cipher`进行加解密操作,可以确保数据的安全传输和存储。了解并掌握这些技术,对于开发安全...
总的来说,这本书是Java开发者深入学习加密解密技术的宝贵资源,无论你是初学者还是有经验的开发者,都能从中受益匪浅,提升你在网络安全领域的专业技能。通过阅读这本书,你将能够更好地应对各种安全挑战,保护你的...
Java证书加密解密是Java开发中涉及网络安全的重要环节,它主要涉及到数字证书、SSL/TLS协议、公钥加密和私钥解密等概念。在这个场景中,`Payment Mgr.p12`是一个PKCS12格式的文件,通常用于存储个人身份信息,包括...
综合应用篇既细致地讲解了加密技术对数字证书和SSL/TLS协议的应用,又以示例的方式讲解了加密与解密技术在网络中的实际应用,极具实践指导性。Java开发者将通过本书掌握密码学和Java加密与解密技术的所有细节;系统...
本书是Java安全领域的百科全书,密码学领域的权威经典,4大社区一致鼎力...综合应用篇既细致地讲解了加密技术对数字证书和SSL/TLS协议的应用,又以示例的方式讲解了加密与解密技术在网络中的实际应用,极具实践指导性。
通过学习这份"Java加密与解密的艺术"的源代码,你可以深入理解加密过程的实现细节,包括密钥的生成、加密解密流程、异常处理以及如何与其他Java安全组件集成。同时,你可以看到实际项目中如何使用这些概念,从而提升...
综合应用篇既细致地讲解了加密技术对数字证书和SSL/TLS协议的应用,又以示例的方式讲解了加密与解密技术在网络中的实际应用,极具实践指导性。, Java开发者将通过本书掌握密码学和Java加密与解密技术的所有细节;...
源代码整理部分,`javaSrc175.zip`可能包含了与书中各个章节对应的示例代码,这些代码可以帮助读者更直观地理解和实现上述加密解密技术。下载并解压后,按照`下载及使用说明.txt`的指示,可以浏览和运行代码,加深对...
在“JAVA使用数字证书加密文件”的主题中,我们聚焦于如何使用RSA算法结合数字证书对文件进行加密。RSA是一种非对称加密算法,它的安全性基于大数分解的困难性,因此在网络安全中被广泛应用。 首先,我们需要了解几...
Java加密与解密的艺术 第二版(清晰+书签+完整版).pdf真正第二版,《Java加密与解密的艺术(第2版)》是Java安全领域公认的标杆之作,被奉为每一位Java开发工程师必读的著作之一。由资深专家撰写,第1版4年来畅销不...
在Java编程语言中,实现加密和解密是安全领域中的重要任务,主要用于保护数据的隐私性和完整性。本文将深入探讨如何使用Java进行加密和解密操作,主要关注以下几个方面: 1. **加密算法理解** - **对称加密**:如...
通过对《Java加密与解密的艺术》的学习,开发者不仅可以掌握Java中的加密解密技术,还能了解到如何在实际项目中应用这些技术,保护用户数据的安全,满足合规性要求,如欧盟的GDPR(通用数据保护条例)等。...
本资源“java加密与解密的艺术全包括源码.rar”提供了全面的Java加密解密技术实现,涵盖了多种算法和应用场景。下面我们将深入探讨其中涉及的一些核心知识点。 1. **对称加密**:对称加密是最常见的加密方式,如DES...
综合应用篇既细致地讲解了加密技术对数字证书和SSL/TLS协议的应用,又以示例的方式讲解了加密与解密技术在网络中的实际应用,极具实践指导性。Java开发者将通过本书掌握密码学和Java加密与解密技术的所有细节;系统...
以下是一些关于如何使用Java实现文件加密解密的关键知识点: 1. **对称加密算法**:最常见的对称加密方法是AES(Advanced Encryption Standard),它使用相同的密钥进行加密和解密。Java提供了`javax.crypto`包来...
6. 压缩包中的`signature`文件可能包含的是一个示例程序,演示了如何在Java中使用RSA进行签名、验签、加密和解密。这个程序可能会包括以下关键部分: - 导入必要的安全库 - 创建并初始化`KeyPairGenerator` - ...
通过学习《Java加密与解密的艺术》,开发者不仅可以掌握Java平台上的加密解密技术,还能提升网络安全意识,为开发安全的应用程序提供坚实的基础。同时,对于Java开发者来说,理解和应用这些加密技术也是提升专业技能...