/**
* 自动产生RSA512位密钥(可以在512到2048之间)
*/
public static void getA271() throws Exception{
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(512);
KeyPair kp = kpg.genKeyPair();
PublicKey puk = kp.getPublic();
PrivateKey prk = kp.getPrivate();
System.out.println("公钥:"+puk);
System.out.println("私钥:"+prk);
}
/**
* 自动产生RSA1024位密钥;并保持到文件里
*/
public static void getA272() throws Exception{
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(512);
KeyPair kp = kpg.genKeyPair();
PublicKey puk = kp.getPublic();
PrivateKey prk = kp.getPrivate();
FileOutputStream pufos = new FileOutputStream("d:\\rsapublickey.txt");
ObjectOutputStream puoos = new ObjectOutputStream(pufos);
puoos.writeObject(puk);
FileOutputStream prfos = new FileOutputStream("d:\\rsaprivatekey.txt");
ObjectOutputStream proos = new ObjectOutputStream(prfos);
proos.writeObject(prk);
}
/**
* 使用非对称生成的公钥进行加密RSA512
*/
public static void getA281() throws Exception{
FileInputStream fis = new FileInputStream("d:\\rsapublickey.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
RSAPublicKey pbk = (RSAPublicKey)ois.readObject();
BigInteger e = pbk.getPublicExponent();
BigInteger n = pbk.getModulus();
String mingwen = "hello world";//明文
byte[] ptext = mingwen.getBytes("UTF-8");
BigInteger m = new BigInteger(ptext);
BigInteger c = m.modPow(e, n);//因为RSA算法要求整型数m的值必须小于n,所以需要计算
//保存密文
String cs = c.toString();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("d:\\rsapublickeyjiamihou.txt")));
bw.write(cs);
bw.flush();
}
/**
* 使用非对称生成的公钥和私钥进行解密RSA512
*/
public static void getA282() throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("d:\\rsapublickeyjiamihou.txt")));//加密后文件
String ctext = br.readLine();
BigInteger c = new BigInteger(ctext);
FileInputStream fis = new FileInputStream("d:\\rsaprivatekey.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
RSAPrivateKey prk = (RSAPrivateKey)ois.readObject();
BigInteger d = prk.getPrivateExponent();
BigInteger n = prk.getModulus();
BigInteger m = c.modPow(d, n);
byte[] mt = m.toByteArray();
String s = "";
for(int i=0;i<mt.length;i++){
s+=(char)mt[i];
}
System.out.println(s);
}
分享到:
相关推荐
以上就是Java中使用RSA加密解密的基本操作,包括生成密钥对、保存和加载密钥文件,以及处理超长字符的分块加密和解密。这些知识点在实际的项目开发中非常实用,特别是涉及到敏感数据传输和存储时。在处理过程中,...
后来又传了个新的,叫做“包括私钥加密的RSA密钥生成和加密解密”基于.net Framework 4编,能够生成公钥私钥,直观看到(e,n)和(d,n),能够进行文本及文件加密解密(相关函数输入输出均为byte[],非常好用),...
- 加密的原始数据长度受到RSA密钥大小的限制,通常需要先对数据进行分块或使用对称加密(如AES)对大数据进行加密,然后用RSA加密对称密钥。 - 加密和解密过程中,保持一致的填充模式和编码方式,否则可能会导致解密...
5. RSA密钥生成:根据RSA算法,选取两个大素数p和q,计算n=p*q,欧拉函数φ(n)=(p-1)*(q-1),然后选择一个与φ(n)互质的整数e,最后计算e关于φ(n)的模逆元d,即d*e ≡ 1 mod φ(n)。公钥由(e, n)组成,私钥由(d, n)...
在"RSA加密算法"这个压缩包文件中,可能包含了实现RSA算法的代码示例或工具,用户可以通过这些资源学习如何生成RSA密钥对,以及如何使用这些密钥进行加密和解密操作。通过实践,用户可以更深入地理解RSA的工作原理,...
在本项目"RSA密钥生成、JS加密、PHP解密Demo"中,我们将探讨如何使用RSA进行密钥生成、JavaScript加密以及PHP解密的流程。 1. RSA密钥生成: RSA密钥对包括一对公钥和私钥。公钥可以公开,用于加密数据;而私钥...
RSA算法是一种非对称加密技术,它在信息安全领域扮演着重要的角色。非对称加密与对称加密的主要区别在于,它使用两个不同的密钥:一个...开发者可以通过运行这些示例代码,理解并应用RSA加密解密技术到自己的项目中。
这些脚本可能包含了生成公私钥对、公钥加密和私钥解密的函数,并且每次运行都会随机生成新的数据进行测试,以确保算法的正确性。通过查看和理解这些代码,我们可以深入学习RSA算法的实现细节和应用。 总的来说,RSA...
- 加解密的数据长度受限于RSA密钥的大小,通常为密钥长度减去11位。因此,如果需要加密大量数据,通常会采用一种称为“密钥交换”的方式,先用RSA加密一个对称密钥,然后使用这个对称密钥加密大量数据,这样可以...
本资源提供了基于Java平台实现RSA算法的详细过程,包括密钥的生成、加解密操作,并附带有源代码和实习总结,有助于学习者深入理解和实践RSA算法。 首先,我们来了解一下RSA算法的基本原理。RSA是由Ron Rivest、Adi ...
本地生成RSA密钥对工具包,运行直接生成,1024和2048位都可以,修改配置文件config.properties中的参数即可,运行后本目录下生成4个文件:privateKey.txt,publicKey.txt,privateKey.pem,publicKey.pem
这个程序应该演示了如何生成RSA密钥对,使用公钥加密数据,然后使用私钥解密,反之亦然。在实际应用中,公钥可以公开,而私钥必须保密,确保数据的安全性。 PKCS(Public-Key Cryptography Standards)是由RSA ...
本篇文章将深入探讨C#如何实现RSA加密解密,并结合Winform界面进行演示。 **1. RSA算法基础** RSA算法基于数论原理,包括大数因子分解的困难性。它包含两个密钥:公钥和私钥。公钥可以公开,用于加密;私钥必须...
- `GenerateKeyPair()`:生成RSA密钥对。 - `Encrypt()`:使用公钥进行加密。 - `Decrypt()`:使用私钥进行解密。 - `ToBase64String()` 和 `FromBase64String()`:可能用于将字节数组转换为Base64字符串,以便于...
1. `rsa_keygen.m`:生成RSA密钥对的MATLAB脚本。 2. `rsa_encrypt.m`:使用公钥加密数据的MATLAB函数。 3. `rsa_decrypt.m`:使用私钥解密数据的MATLAB函数。 4. `rsa_sign.m`:生成数字签名的MATLAB函数。 5. `rsa...
本资源提供了RSA加密解密的源码,适用于学习和理解RSA算法的工作原理及其实现。 首先,RSA算法的核心原理基于大数的因式分解困难性。它由三位科学家Rivest、Shamir和Adleman于1977年提出,因此得名RSA。该算法包括...
总结来说,这个压缩包文件包含了一套完整的RSA加密解密资源,涵盖了理论解释、实践工具以及不同平台的代码示例,可以帮助开发者理解和应用RSA算法。无论是在桌面应用、移动设备还是服务器环境中,了解和掌握RSA都是...
在这个场景中,我们主要关注如何使用 OpenSSL 生成 RSA 密钥对,这是许多网络安全应用的基础,比如 SSL/TLS 加密、数字签名以及 SSH 连接等。 1. **安装 OpenSSL**: 在 Windows 上,你可以通过下载 OpenSSL 的 ...
RSA加密解密是一种广泛应用于网络安全领域的非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman三位科学家在1977年提出,因此得名RSA。这种算法基于大整数因子分解的困难性,使得只有持有正确密钥的人才能...
在iOS平台上使用Objective-C进行RSA加密和解密通常涉及几个步骤,包括生成RSA密钥对、使用公钥加密数据、以及使用私钥解密数据。以下是一个简化的步骤说明和示例代码,展示了如何使用Objective-C和CommonCrypto库...