`
liulanghan110
  • 浏览: 1076764 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

非对称加密 (公钥加密私钥解密或者公钥解密私钥加密)

    博客分类:
  • JAVA
阅读更多

非对称加密

 

非对称加密有一对密钥,公钥和私钥。可以用公钥加密,也可以用私钥加密。不过,公钥加密必须用私钥解密,私钥加密必须用公钥解密。如果不对应,则会报这样的异常

javax.crypto.BadPaddingException: Data must start with zero

 

 

代码如下:

 

import java.security.KeyPair;
import java.security.KeyPairGenerator;
import javax.crypto.Cipher;

public class test1 {

	//公钥加密
	public byte[] PublicEncrypt(KeyPair key,String str)throws Exception {
	    Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
	    cipher.init(Cipher.ENCRYPT_MODE, key.getPublic());
	    return cipher.doFinal(str.getBytes("UTF8"));
	}
	
	//公钥解密
	public byte[] PublicDECRYPT (KeyPair key,byte[]  data)throws Exception {
	    Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
	    cipher.init(Cipher.DECRYPT_MODE, key.getPublic());
	    return cipher.doFinal(data);
	}
	
	//私钥加密
	public byte[] PrivateEncrypt (KeyPair key,String str)throws Exception {
	    Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
	    cipher.init(Cipher.ENCRYPT_MODE, key.getPrivate());
	    return cipher.doFinal(str.getBytes("UTF8"));
	}
	
	//私钥解密
	public byte[] PrivateDECRYPT(KeyPair key,byte[]  data)throws Exception  {
	    Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
	    cipher.init(Cipher.DECRYPT_MODE, key.getPrivate());
	    return cipher.doFinal(data);
	}

    
	public static void main(String args[]) throws Exception {
		String str = "Hello World!";
		KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
	    keyGen.initialize(1024);
	    KeyPair key = keyGen.generateKeyPair();
		test1 t = new test1();
		System.out.println("加密前原文:"+str);
		byte[] data = t.PublicEncrypt(key,str); 
		System.out.println("私钥解密后:"+new String(t.PrivateDECRYPT(key,data)));
		byte[] data1 = t.PrivateEncrypt(key,str); 
		System.out.println("公钥解密后:"+new String(t.PublicDECRYPT(key,data1)));
	}
}
分享到:
评论
4 楼 lijunwyf41 2014-02-25  
RSA 加密解密 Data must start with zero 对这个问题,你试试

ciphertext = URLDecoder.decode(ciphertext,"UTF-8").replace(' ', '+');
3 楼 me- 2013-07-30  
   good 
2 楼 me- 2013-07-30  
xiexie
1 楼 eisenhower 2012-02-21  

相关推荐

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

    RSA是一种非对称加密算法,它基于数学难题的大数因子分解,由Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出,因此得名RSA。本教程主要讲解如何在C# .NET环境中使用RSA进行公钥加密和私钥解密,以及私钥加密...

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

    在这个示例中,"RSA加密"的压缩包可能包含了Java和C#的完整源代码,用于演示如何在两者之间实现RSA公钥加密和私钥解密的过程。开发者可以通过运行这些示例代码,理解并应用RSA加密解密技术到自己的项目中。

    C# 非对称加密 私钥加密 公钥解密实现

    C# RSA非对称加密 实现私钥加密 公钥解密;可以用于生成授权码。 RSA生成一下随机值,然后都是用BigInteger类字符串跟字节数组互转

    C# RSA 公钥加密,私钥解密

    在IT领域,尤其是在网络安全和数据保护方面,RSA算法是一种广泛使用的非对称加密技术。本文将深入探讨如何在C#编程环境下,利用RSA算法进行公钥加密和私钥解密,以此来确保数据的安全传输。我们将以Visual Studio ...

    公钥加密私钥解密&私钥加密公钥解密

    公钥加密私钥解密是基于非对称加密算法的一种实现方式。这种加密方法使用一对密钥——公钥和私钥。其中,公钥可以公开给任何人使用,而私钥则必须保密,只有密钥的所有者才能掌握。具体工作流程如下: 1. **发送方...

    RSA工具类(内含公钥加密、私钥解密、私钥加签、公钥验签)

    RSA为最常用的一种非对称方式的算法,这次封装的Utils类完成了公钥加密、私钥解密、私钥加签、公钥验签四种常用方法。

    Java 公钥和私钥加密解密代码

    在非对称加密算法中,每一对密钥由一个公钥和一个私钥组成。公钥是公开的,可以被任何人获取,用于加密数据;而私钥则是保密的,只有密文的接收者拥有,用于解密数据。这种机制确保了即使加密的数据在传输过程中被...

    Java公钥加密私钥解密.rar

    在IT领域,尤其是在网络安全和数据传输中,公钥加密和私钥解密是一种常见的安全机制。这个名为"Java公钥加密私钥解密.rar"的压缩包文件包含了一个使用Java实现的公钥/私钥加密解密的示例。在这个案例中,开发者可能...

    使用公钥加密私钥解密原理

    在信息安全领域,公钥加密和私钥解密是现代密码学中的重要概念,它们是基于非对称加密算法的基础。这种加密方式与传统的对称加密不同,它涉及到两把密钥:一把是公开的公钥,另一把是保密的私钥。在公钥加密和私钥...

    C#RSA私钥加密公钥解密

    在C#编程环境中,RSA(Rivest-Shamir-Adleman)是一种广泛使用的非对称加密算法,常用于确保数据的安全传输。私钥加密和公钥解密是RSA算法的核心特性,允许发送者使用接收者的公钥来加密数据,而只有持有对应私钥的...

    RSA生成公钥私钥和使用公钥私钥加密解密demo

    RSA算法是一种非对称加密算法,它在信息安全领域有着广泛的应用,特别是在数据加密、数字签名等方面。本示例提供了一个RSA加密工具类,用于生成公钥和私钥,并使用它们进行加密和解密操作,这对于保护数据库中的敏感...

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

    本文将详细讲解Delphi环境下如何实现RSA加解密,并着重讨论其支持的公钥加密私钥解密以及私钥加密公钥解密的功能,同时涉及PKCS8和PKCS1两种秘钥格式。 RSA是一种基于大数因子分解困难性的加密算法,由Ron Rivest、...

    C#-RSA非对称加密公钥加密.rar

    "C#-RSA非对称加密公钥加密.rar"压缩包提供的就是一个完整的C# RSA非对称加密实例,确保用户可以直接使用,无需额外寻找库文件或代码片段。 RSA算法由Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出,其工作...

    vue生成rsa非对称加密工具类及使用方法(包含公钥加密,私钥解密)

    RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA公开密钥密码体制。所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不...

    RSA.zip_C++ rsa私钥加密_rsa加密解密_公钥私钥_私钥加密

    RSA是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出,是现代密码学的基石之一。这种算法基于大数因子分解的困难性,使得只有拥有特定密钥的人才能进行解密,从而保障了数据的安全性。...

    RAS公钥加密私钥解密

    在IT领域,非对称加密算法是数据安全的重要组成部分,其中RSA(Rivest-Shamir-Adleman)是一种广泛应用的公钥加密技术。本文将深入探讨RSA公钥加密私钥解密的工作原理及其在Java和JavaScript中的实现。 RSA算法基于...

    RAS公钥加密私钥解密的例子(加密文件)

    RSA算法是一种广泛应用于网络安全的非对称加密技术,由Ron Rivest、Adi Shamir和Leonard Adleman三位科学家于1977年提出,因此得名RAS。这种算法的特点在于它使用一对密钥,即公钥和私钥,进行加密和解密操作,与...

    java语言 RSA公钥加密,私钥解密

    Java语言中的RSA是一种广泛使用的非对称加密算法,它的特点是安全性高,但加密和解密的速度相对较慢。在Android客户端中,RSA常用于敏感数据的保护,比如用户密码、身份信息等,确保这些数据在网络传输过程中不被...

    RSA前台公钥加密后台私钥解密 jdk 1.5-1.8版本

    在"RSA前台公钥加密后台私钥解密"的场景中,通常用于确保数据在客户端(前台)与服务器端(后台)之间的安全传输。 1. RSA原理:RSA是由Ron Rivest、Adi Shamir和Leonard Adleman三位科学家于1977年提出的,它的...

    RSA 公钥加密-私钥解密

    RSA算法是一种非对称加密算法,它在信息安全领域扮演着重要...通过阅读该博客,你可以更深入地理解RSA公钥加密和私钥解密的过程,并了解如何在实际场景中应用这一加密机制。为了获取更多细节,建议访问提供的博客链接。

Global site tag (gtag.js) - Google Analytics