在网上找了下RSA的密钥的创建,结果全是用java序列化PublicKey和PrivateKey来保存,就自己写了个RSA公钥和私钥的创建,及进行Base64编码后保存。
这里用到了 bcprov-jdk16-1.4.5.jar ,可以在 http://www.bouncycastle.org/ 官方主页上下载.
public static void createKeyPairs() throws Exception {
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
// create the keys
KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA", "BC");
generator.initialize(512, new SecureRandom());
KeyPair pair = generator.generateKeyPair();
PublicKey pubKey = pair.getPublic();
PrivateKey privKey = pair.getPrivate();
byte[] pk = pubKey.getEncoded();
byte[] privk = privKey.getEncoded();
String strpk = new String(Base64.encodeBase64(pk));
String strprivk = new String(Base64.encodeBase64(privk));
System.out.println("公钥:" + Arrays.toString(pk));
System.out.println("私钥:" + Arrays.toString(privk));
System.out.println("公钥Base64编码:" + strpk);
System.out.println("私钥Base64编码:" + strprivk);
X509EncodedKeySpec pubX509 = new X509EncodedKeySpec(Base64.decodeBase64(strpk.getBytes()));
PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(Base64.decodeBase64(strprivk.getBytes()));
KeyFactory keyf = KeyFactory.getInstance("RSA", "BC");
PublicKey pubkey2 = keyf.generatePublic(pubX509);
PrivateKey privkey2 = keyf.generatePrivate(priPKCS8);
System.out.println(pubKey.equals(pubkey2));
System.out.println(privKey.equals(privkey2));
}
分享到:
相关推荐
这段代码首先获取了RSA密钥生成器,然后初始化为2048位长度(为了安全性,通常选择较长的密钥长度),最后生成并分离出公钥和私钥。 接下来,我们可以使用公钥对数据进行加密,私钥进行解密。例如: ```java ...
详细步骤: 1.根据开发语言选择密钥格式。 2.选择密钥长度,新建应用请务必使用2048位。...3.点击 “生成密钥”,会自动生成商户应用公钥和应用私钥。 4.点击“打开密钥文件路径”,即可找到生成的公私钥。
本篇主要介绍如何使用Java生成RSA密钥对,进行数据的加密与解密,以及如何处理超长字符的分区问题。 RSA是一种非对称加密算法,它基于两个不同的密钥:公钥和私钥。公钥用于加密,而私钥用于解密。这种机制使得只有...
这个"rsa密钥生成工具.zip"文件很可能包含了帮助开发者生成RSA密钥对的程序或者指南,特别是针对支付宝这样的支付平台,非对称加密技术是必不可少的安全保障。 在非对称加密中,有两个密钥:公钥和私钥。公钥可以...
使用自定义的RSA密钥生成方式有助于深入理解加密过程,但需要注意的是,这种方式可能不如标准库那样安全和高效,因为它没有经过专业安全团队的审核和优化。在实际项目中,除非有特殊需求,一般推荐使用Java的`...
Java RSA加密密钥生成器
在这个场景中,我们主要关注如何使用 OpenSSL 生成 RSA 密钥对,这是许多网络安全应用的基础,比如 SSL/TLS 加密、数字签名以及 SSH 连接等。 1. **安装 OpenSSL**: 在 Windows 上,你可以通过下载 OpenSSL 的 ...
总之,Java和Keytool在RSA密钥生成方面提供了强大的功能,无论是对于开发者还是系统管理员,理解和掌握这些工具和概念都是至关重要的。通过正确使用这些工具,可以确保数据的安全传输和身份验证,从而保障网络应用的...
1. 生成RSA密钥对:在.NET和Java中都应提供生成公钥和私钥的方法。 2. 导出和导入密钥:将密钥从.NET的XML格式转换为Java可读的DER或PEM格式,反之亦然。 3. 加密和解密:根据平台提供加密和解密的功能,确保在.NET...
JDK 1.7以上版本(含) ...生成1024位的RSA密钥对; java -jar keygen.jar rsa 生成1024为的DSA密钥对 java -jar keygen.jar dsa 版权所有, 公布源码, 随意转载修改再发布, 注明出处即可 编译后的JAR下载 ...
本文将深入探讨这两种密钥生成工具以及它们在个人二次开发中的应用。 首先,RSA(Rivest-Shamir-Adleman)是一种公钥加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出。其核心原理基于大整数因子...
Java密钥生成工具是用于创建数字证书和管理密钥对的实用程序,主要涉及Java的安全框架。`keytool`是Java SDK自带的一个命令行工具,它允许用户在本地系统上生成、存储和管理密钥对以及信任证书。在这个场景中,我们...
在这里,我们将深入探讨Java中密钥生成的基本概念和常用方法。 1. 密钥类型: - 对称密钥:如AES(高级加密标准)或DES(数据加密标准),同一密钥用于加密和解密。 - 非对称密钥:如RSA或DSA,一对密钥,一个...
标题中的“RSA任意长度密钥生成工具”是指可以生成任意位数的RSA密钥对的软件。在标准RSA算法中,密钥长度通常是以位(bits)为单位,常见的有1024位、2048位、4096位等。密钥长度越长,安全性越高,但加密和解密的...
压缩包中的`rsa_c#2java`可能是一个C#编写的工具,用于将RSA密钥从C#格式转换为JAVA可使用的格式。使用该工具时,需要确保系统已安装.NET Framework环境,否则可能无法运行。转换后,可以在JAVA应用程序中直接使用...
本地生成RSA密钥对工具包,运行直接生成,1024和2048位都可以,修改配置文件config.properties中的参数即可,运行后本目录下生成4个文件:privateKey.txt,publicKey.txt,privateKey.pem,publicKey.pem
1. **生成RSA密钥对**:在Java中,我们可以使用`KeyPairGenerator`类的`generateKeyPair()`方法生成一对RSA密钥,包括一个公钥(PublicKey)和一个私钥(PrivateKey)。生成的密钥通常以X.509编码格式存储。 2. **...
Delphi使用OpenSSL,根据RSA密钥文件(.pem)进行签名。Delphi7可用,解决UTF8中文奇数bug,签名结果与java常用的MD5withRSA算法、PHP的openssl_sign($data, $encrypted, $private_key, OPENSSL_ALGO_MD5)函数算法得到...
JavaRSA生成公钥私钥及加解密是Java编程中涉及密码学的重要实践。RSA是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出,因其发明者的名字首字母命名。在Java中,我们可以使用Java ...
这些库允许在浏览器环境中生成RSA密钥对,并使用公钥对敏感数据进行加密,然后将加密后的数据发送到服务器。 后端,Java作为一种常用的企业级开发语言,拥有丰富的安全库,例如Bouncy Castle,用于处理RSA加密解密...