证书,加密的相关知识可以参考阮一峰的密码学笔记和数字签名是什么
代码中使用的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开发中涉及网络安全的重要环节,它主要涉及到数字证书、SSL/TLS协议、公钥加密和私钥解密等概念。在这个场景中,`Payment Mgr.p12`是一个PKCS12格式的文件,通常用于存储个人身份信息,包括...
在Java编程语言中,实现加密和解密是安全领域中的重要任务,主要用于保护数据的隐私性和完整性。本文将深入探讨如何使用Java进行加密和解密操作,主要关注以下几个方面: 1. **加密算法理解** - **对称加密**:如...
在“JAVA使用数字证书加密文件”的主题中,我们聚焦于如何使用RSA算法结合数字证书对文件进行加密。RSA是一种非对称加密算法,它的安全性基于大数分解的困难性,因此在网络安全中被广泛应用。 首先,我们需要了解几...
以下是一些关于如何使用Java实现文件加密解密的关键知识点: 1. **对称加密算法**:最常见的对称加密方法是AES(Advanced Encryption Standard),它使用相同的密钥进行加密和解密。Java提供了`javax.crypto`包来...
6. 压缩包中的`signature`文件可能包含的是一个示例程序,演示了如何在Java中使用RSA进行签名、验签、加密和解密。这个程序可能会包括以下关键部分: - 导入必要的安全库 - 创建并初始化`KeyPairGenerator` - ...
有朋友叫帮忙做有一个RSA加解密的帮助类,后面发现是与JAVA做交互,对方提供了公钥...而现在只能使用公钥加密,公钥解密,而且C#与Java并不互通,所以采用第三方类库 BouncyCastle来进行实现。并且实现了分段加密功能。
Java通过`java.security.KeyPairGenerator`生成公钥和私钥,然后使用`Cipher`进行加密解密操作。 5. **文件加密与解密步骤** - 对文件进行加密时,通常先将文件读入内存,然后按块进行加密,最后将加密后的数据...
总的来说,Java字符串加密解密涉及到多个层面的知识,包括加密算法、密钥管理、安全协议等。理解和熟练掌握这些技术对于保障网络安全至关重要。在实际开发中,还需要关注加密算法的版本限制、密钥的安全存储以及法律...
Java加密/解密技术是Java开发中至关重要的一个领域,主要涉及到数据安全、隐私保护以及通信过程中的数据传输安全。在网络安全日益严峻的今天,掌握Java的加密和解密技术对于开发者来说至关重要。 1. **对称加密算法...
本实例将探讨一些常见的加密解密算法及其在Java中的实现。以下是一些关键知识点: 1. **对称加密算法**:这类算法使用相同的密钥进行加密和解密,如DES(Data Encryption Standard)、3DES(Triple DES)和AES...
这些知识点在提供的Java加密解密工具包中可能有所体现,通过这些工具,开发者可以轻松地集成安全功能到他们的应用程序中,确保数据的安全传输和存储。理解并熟练运用这些概念,有助于构建更健壮和安全的Java系统。
Java 实现加密与解密是信息安全领域的重要技术,涉及到密码学的基本原理和现代密码学的应用。密码学的历史可追溯到手工加密阶段,包括古典密码,如凯撒密码,主要运用移位和替代技术。现代密码学发展至计算机加密...
本文将详细讲解RSA算法的加签、加密、解密以及验签的过程,结合Java语言来实现这一系列操作,并涉及到证书的使用。 首先,我们需要理解RSA算法的基本原理。RSA算法基于两个大素数的乘积难以分解这一数学难题,生成...
Java实现RSA加密解密,数字证书生成与验证,模拟两个端通信,AB双方通信,客户端A把需要传输的文件MD5值用自己的私钥生成数字签名,连同明文用服务端B的公钥加密后传送给服务端B,服务端B用私钥解密验证数字签名,并计算...
本实例代码着重于Java与.NET平台之间的RSA加密解密及签名验签操作,这对于跨平台的数据安全通信具有实际意义,例如与支付宝POS对接时。 1. **RSA算法基础**: RSA是一种基于大数因子分解困难性的公钥密码体制。它...
加密证书和RSA加密解密是信息安全领域中的重要概念,它们在保护数据安全、验证网络通信双方身份以及确保信息完整性方面发挥着关键作用。在此,我们将深入探讨这些知识点,并结合一个名为"demo"的示例来进一步理解其...
总结来说,`.net 与Java间RSA加密的转换`涉及到了非对称加密算法RSA在跨平台环境下的应用,重点在于密钥的生成、转换和数据的加密解密。`RsaHelper`类是实现这个转换的关键,配合`StringUtils`和`Base64Helper`类,...