`
yaodaqing
  • 浏览: 349315 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

自动生成RSA密钥,并进行加密和解密1

阅读更多
/**
	 * 自动产生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密钥进行数据加密解密 支持超长字符分区

    以上就是Java中使用RSA加密解密的基本操作,包括生成密钥对、保存和加载密钥文件,以及处理超长字符的分块加密和解密。这些知识点在实际的项目开发中非常实用,特别是涉及到敏感数据传输和存储时。在处理过程中,...

    基于.net framework4的RSA密钥生成和加密解密,包括私钥加密

    后来又传了个新的,叫做“包括私钥加密的RSA密钥生成和加密解密”基于.net Framework 4编,能够生成公钥私钥,直观看到(e,n)和(d,n),能够进行文本及文件加密解密(相关函数输入输出均为byte[],非常好用),...

    unity工具类RSA加密和解密

    - 加密的原始数据长度受到RSA密钥大小的限制,通常需要先对数据进行分块或使用对称加密(如AES)对大数据进行加密,然后用RSA加密对称密钥。 - 加密和解密过程中,保持一致的填充模式和编码方式,否则可能会导致解密...

    生成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.rar_RSA密钥_rsa加密_rsa加密解密

    在"RSA加密算法"这个压缩包文件中,可能包含了实现RSA算法的代码示例或工具,用户可以通过这些资源学习如何生成RSA密钥对,以及如何使用这些密钥进行加密和解密操作。通过实践,用户可以更深入地理解RSA的工作原理,...

    RSA密钥生成、 JS加密、PHP解密Demo

    在本项目"RSA密钥生成、JS加密、PHP解密Demo"中,我们将探讨如何使用RSA进行密钥生成、JavaScript加密以及PHP解密的流程。 1. RSA密钥生成: RSA密钥对包括一对公钥和私钥。公钥可以公开,用于加密数据;而私钥...

    RSA算法JAVA公钥加密,C#私钥解密

    RSA算法是一种非对称加密技术,它在信息安全领域扮演着重要的角色。非对称加密与对称加密的主要区别在于,它使用两个不同的密钥:一个...开发者可以通过运行这些示例代码,理解并应用RSA加密解密技术到自己的项目中。

    RSA生成密钥对、公钥加密和私钥解密

    这些脚本可能包含了生成公私钥对、公钥加密和私钥解密的函数,并且每次运行都会随机生成新的数据进行测试,以确保算法的正确性。通过查看和理解这些代码,我们可以深入学习RSA算法的实现细节和应用。 总的来说,RSA...

    C# .net版 RSA 公钥加密私钥解密 私钥加密公钥解密

    - 加解密的数据长度受限于RSA密钥的大小,通常为密钥长度减去11位。因此,如果需要加密大量数据,通常会采用一种称为“密钥交换”的方式,先用RSA加密一个对称密钥,然后使用这个对称密钥加密大量数据,这样可以...

    Delphi RSA加解密【支持RSA公钥加密私钥解密,RSA私钥加密公钥解密,秘钥格式支持PKCS8和PKCS1】D7~XE10可用

    这个程序应该演示了如何生成RSA密钥对,使用公钥加密数据,然后使用私钥解密,反之亦然。在实际应用中,公钥可以公开,而私钥必须保密,确保数据的安全性。 PKCS(Public-Key Cryptography Standards)是由RSA ...

    基于RSA的公钥加密,密钥的生成及加解密,包含源代码及实习报告

    本资源提供了基于Java平台实现RSA算法的详细过程,包括密钥的生成、加解密操作,并附带有源代码和实习总结,有助于学习者深入理解和实践RSA算法。 首先,我们来了解一下RSA算法的基本原理。RSA是由Ron Rivest、Adi ...

    本地生成RSA密钥对工具包,RSA加密解密

    本地生成RSA密钥对工具包,运行直接生成,1024和2048位都可以,修改配置文件config.properties中的参数即可,运行后本目录下生成4个文件:privateKey.txt,publicKey.txt,privateKey.pem,publicKey.pem

    C# RSA加密解密

    本篇文章将深入探讨C#如何实现RSA加密解密,并结合Winform界面进行演示。 **1. RSA算法基础** RSA算法基于数论原理,包括大数因子分解的困难性。它包含两个密钥:公钥和私钥。公钥可以公开,用于加密;私钥必须...

    C#RSA私钥加密公钥解密

    - `GenerateKeyPair()`:生成RSA密钥对。 - `Encrypt()`:使用公钥进行加密。 - `Decrypt()`:使用私钥进行解密。 - `ToBase64String()` 和 `FromBase64String()`:可能用于将字节数组转换为Base64字符串,以便于...

    RSA算法:密钥生成、加密/解密和身份验证_MATLAB代码_下载

    1. `rsa_keygen.m`:生成RSA密钥对的MATLAB脚本。 2. `rsa_encrypt.m`:使用公钥加密数据的MATLAB函数。 3. `rsa_decrypt.m`:使用私钥解密数据的MATLAB函数。 4. `rsa_sign.m`:生成数字签名的MATLAB函数。 5. `rsa...

    RSA.zip_RSA 加密解密_rsa_rsa加密算法_rsa加密解密_rsa加密解密算法

    本资源提供了RSA加密解密的源码,适用于学习和理解RSA算法的工作原理及其实现。 首先,RSA算法的核心原理基于大数的因式分解困难性。它由三位科学家Rivest、Shamir和Adleman于1977年提出,因此得名RSA。该算法包括...

    Delphi标准RSA加密,解密,签名.与C,Java,php等通用

    2. **密钥生成**:在Delphi中,可以使用内置的TNetCrypto库或者其他第三方库(如GDI+单位)生成RSA密钥对。通常包括选择一个大素数p和q,计算n=p*q,欧拉函数φ(n)=(p-1)*(q-1),然后找到一个满足条件egcd(e, φ(n))...

    RSA密钥加密解密

    总结来说,这个压缩包文件包含了一套完整的RSA加密解密资源,涵盖了理论解释、实践工具以及不同平台的代码示例,可以帮助开发者理解和应用RSA算法。无论是在桌面应用、移动设备还是服务器环境中,了解和掌握RSA都是...

    OpenSSL工具生成RSA密钥1

    在这个场景中,我们主要关注如何使用 OpenSSL 生成 RSA 密钥对,这是许多网络安全应用的基础,比如 SSL/TLS 加密、数字签名以及 SSH 连接等。 1. **安装 OpenSSL**: 在 Windows 上,你可以通过下载 OpenSSL 的 ...

    Rsa加密解密.rar_RSA 加密解密_java rsa_rsa加密_rsa加密java_加密 解密

    RSA加密解密是一种广泛应用于网络安全领域的非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman三位科学家在1977年提出,因此得名RSA。这种算法基于大整数因子分解的困难性,使得只有持有正确密钥的人才能...

Global site tag (gtag.js) - Google Analytics