`
happy9837457
  • 浏览: 5283 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

RSA 加解密java实现

    博客分类:
  • java
 
阅读更多

非对称加密

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

javax.crypto.BadPaddingException: Data must start with zero

 

代码如下

  1. import java.security.KeyPair;  
  2. import java.security.KeyPairGenerator;  
  3. import javax.crypto.Cipher;  
  4.   
  5. public class RSA {  
  6.   
  7.     //公钥加密  
  8.     public byte[] PublicEncrypt(KeyPair key,String str)throws Exception {  
  9.         Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");  
  10.         cipher.init(Cipher.ENCRYPT_MODE, key.getPublic());  
  11.         return cipher.doFinal(str.getBytes("UTF8"));  
  12.     }  
  13.       
  14.     //公钥解密  
  15.     public byte[] PublicDECRYPT (KeyPair key,byte[]  data)throws Exception {  
  16.         Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");  
  17.         cipher.init(Cipher.DECRYPT_MODE, key.getPublic());  
  18.         return cipher.doFinal(data);  
  19.     }  
  20.       
  21.     //私钥加密  
  22.     public byte[] PrivateEncrypt (KeyPair key,String str)throws Exception {  
  23.         Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");  
  24.         cipher.init(Cipher.ENCRYPT_MODE, key.getPrivate());  
  25.         return cipher.doFinal(str.getBytes("UTF8"));  
  26.     }  
  27.       
  28.     //私钥解密  
  29.     public byte[] PrivateDECRYPT(KeyPair key,byte[]  data)throws Exception  {  
  30.         Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");  
  31.         cipher.init(Cipher.DECRYPT_MODE, key.getPrivate());  
  32.         return cipher.doFinal(data);  
  33.     }  
  34.   
  35.       
  36.     public static void main(String args[]) throws Exception {  
  37.         String str = "Hello World!";  
  38.         KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");  
  39.         keyGen.initialize(1024);  
  40.         KeyPair key = keyGen.generateKeyPair();  
  41.         test1 t = new test1();  
  42.         System.out.println("加密前原文:"+str);  
  43.         byte[] data = t.PublicEncrypt(key,str);   
  44.         System.out.println("私钥解密后:"+new String(t.PrivateDECRYPT(key,data)));  
  45.         byte[] data1 = t.PrivateEncrypt(key,str);   
  46.         System.out.println("公钥解密后:"+new String(t.PublicDECRYPT(key,data1)));  
  47.     }  
  48. }  
分享到:
评论

相关推荐

    Java实现的RSA加密解密算法示例

    Java实现的RSA加密解密算法示例 本文主要介绍了Java实现的RSA加密解密算法,结合实例形式分析了Java RSA加密解密算法的相关实现技巧。 知识点1:RSA加密解密算法简介 RSA加密解密算法是一种非对称加密算法,由Ron...

    C#RSA加密与JAVA解密,实现相互通信

    "C# RSA加密与JAVA解密,实现相互通信"的主题聚焦于如何利用RSA公钥/私钥加密算法在C#和Java两个不同的编程环境中实现安全的数据交换。RSA是一种非对称加密算法,它使用一对密钥——公钥和私钥,公钥用于加密,私钥...

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

    这些文件可以帮助读者深入理解RSA加密解密的Java实现,并提供实际操作的参考。 总结来说,RSA加密解密是网络安全中的关键技术,Java提供了丰富的API支持其应用。通过生成密钥对,使用公钥加密和私钥解密,我们可以...

    RSA加解密算法java实现

    ### RSA加解密算法Java实现解析 #### 一、引言 RSA算法是一种非对称加密算法,在现代信息安全领域有着广泛的应用。它基于大整数分解的数学难题,确保了其安全性。本文将通过分析提供的Java代码来深入了解RSA算法的...

    RSA加解密的JAVA实现

    在Java中实现RSA加解密,主要涉及到Java的`java.security`和`javax.crypto`这两个包。首先,我们需要生成一对公钥和私钥,这通常通过`KeyPairGenerator`类来完成。以下是一段创建RSA密钥对的示例代码: ```java ...

    JAVA实现RSA加密解密

    在Java中实现RSA加密解密,可以帮助开发者保护敏感信息,例如在网络传输过程中防止数据被窃取。 首先,了解RSA的工作原理至关重要。它基于两个大素数的乘积,生成一对密钥:公钥和私钥。公钥可以公开,用于加密信息...

    RSA加解密Java&Android;解决长度限制亲测可用idea

    在Java中,`java.security`和`javax.crypto`包提供了必要的接口和类来实现RSA加解密。例如,`KeyPairGenerator`用于生成公钥和私钥对,`Cipher`用于进行加解密操作。 在描述中提到的"解决长度限制",这是因为在RSA...

    与Java的RSA加解密兼容的Python加解密库m2crypto(Windows下免编译)

    由于Java的RSA加解密一般都是用RSA/ECB/PKCS1PADDING,导致Python一般的RSA加密库的加解密结果与Java的不兼容,Python下目前能与之兼容的RSA的库目前发现的只有一个,就是m2crypto。 这个库目前的问题是在windows...

    java_RSA加解密+RSA分段加解密.zip

    使用RSA非对称加密完成Java后端RSA加密和分段加解密,最近研究了RSA非对称加密,关于什么是RSA,网上各种文章一搜一大把,由于RSA的特性,一个1024位的密钥只能加密117位...下面就给出如何完成后端RSA加解密和分段加解密

    java RSA加密解密

    在Java中,我们可以使用Java Cryptography Extension (JCE)库来实现RSA的加密和解密操作。 首先,我们需要了解RSA的基本概念。RSA算法包含两个密钥:公钥和私钥。公钥可以公开给任何人,用于加密数据;而私钥必须...

    java_RSA2048加密解密.zip

    在给定的“java_RSA2048加密解密.zip”压缩包中,包含了前后端实现RSA2048加密解密的示例代码,使得开发者可以轻松地将这种安全机制集成到自己的项目中。 首先,我们需要理解RSA算法的基本原理。RSA(Rivest–...

    Java实现RSA加解密工具类Demo

    Java实现RSA加解密工具类Demo是一个典型的非对称加密技术的应用示例,RSA是一种广泛使用的公开密钥加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出。它基于大数因子分解的困难性,提供了安全的...

    javaRSA加密C++RSA解密

    Java OpenSSL生成的RSA公私钥进行数据加解密详细介绍 项目: JAVA生成的RSA的密文,通过C++来解密。 RSA这里就不多介绍了大家自己去看。 JAVA也是通过包来实现加密和解密的,那么我的C++是通过OPENSSL的库来实现的...

    javaRSA 加解密实现

    java rsa 加解密 包含界面,随机生成密钥

    C# 实现与JAVA互通 加签/验签,RSA加密/解密

    * RSA加密解密:私钥解密,公钥加密。 * RSA数字签名-俗称加签验签:私钥加签,公钥验签。  * RSA加密解密:私钥解密,公钥加密。 * RSA数字签名-俗称加签验签:私钥加签,公钥验签。  * RSA加密解密:私钥...

    RSA加密算法实现以及C#与java互通加解密

    ### RSA加密算法实现以及C#与Java互通加解密 #### 一、RSA算法简介 RSA算法是一种非对称加密算法,由Ron Rivest、Adi Shamir 和 Leonard Adleman 在1977年提出,并以其三人的名字首字母命名。RSA算法的安全性基于...

    C#与java平台RSA加密解密签名验签互通案例

    在这个案例中,"Test"和"Javaworkspace"可能是包含代码示例或者测试数据的文件夹,可能包含C#和Java的实现代码,用于演示如何处理上述步骤,以实现RSA加密解密和签名验签的互通。 在实际应用中,还需要考虑其他因素...

    C#实现RSA加密,JAVA实现解密,交互通信

    在实现跨语言的RSA加解密时,还需要考虑字符编码和字节流的处理。加密和解密的数据通常以字节序列形式存在,而C#和Java在处理字符串时可能有不同的默认编码,如UTF-8或ASCII。确保在加密前正确地将字符串转换为字节...

    PHP_JAVA_RSA互通加解密

    在PHP中,我们可以使用openssl扩展来实现RSA加解密。例如,`openssl_pkey_new()`函数用于生成密钥对,`openssl_public_encrypt()`和`openssl_private_decrypt()`分别用于加密和解密数据。而在Java中,我们可以利用`...

    微信小程序 RSA加解密

    微信小程序RSA加解密是一种在小程序开发中实现数据安全传输的技术。RSA,即Rivest-Shamir-Adleman,是一种非对称加密算法,它基于大整数因子分解的困难性,提供了数据加密和数字签名的服务。在微信小程序中,由于其...

Global site tag (gtag.js) - Google Analytics