2015-06-06 08:44 511人阅读 评论(0) 收藏 举报
 分类:
JAVA(57) 

公钥加密也称为非对称加密、速度慢、加密和解密的钥匙不相同,某一个人持有私钥,任何人都可以知道公钥

  1. package com.stone.security;
  2. import java.security.KeyPair;
  3. import java.security.KeyPairGenerator;
  4. import java.security.PrivateKey;
  5. import java.security.PublicKey;
  6. import java.util.Arrays;
  7. import javax.crypto.Cipher;
  8. /**
  9. * RSA算法 公钥加密 非对称加密
  10. * @author stone
  11. * @date 2014-03-11 00:28:38
  12. */
  13. public class RSA {
  14. public static final String KEY_ALGORITHM = "RSA";
  15. public static final String CIPHER_ALGORITHM_ECB1 = "RSA/ECB/PKCS1Padding";
  16. public static final String CIPHER_ALGORITHM_ECB2 = "RSA/ECB/OAEPWithSHA-1AndMGF1Padding"; //不能用
  17. public static final String CIPHER_ALGORITHM_ECB3 = "OAEPWithSHA-256AndMGF1Padding"; //不能用
  18. static PublicKey publicKey;
  19. static PrivateKey privateKey;
  20. static Cipher cipher;
  21. static KeyPair keyPair;
  22. public static void main(String[] args) throws Exception {
  23. method1("斯柯达U*(Sfsad7f()*^%%$");
  24. method2("斯柯达U*(Sfsad7f()*^%%$");
  25. method3("斯柯达U*(Sfsad7f()*^%%$");
  26. }
  27. /**
  28. * 公钥加密,私钥解密    使用默认CIPHER_ALGORITHM_ECB1
  29. * @param str
  30. * @throws Exception
  31. */
  32. static void method1(String str) throws Exception {
  33. KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM);
  34. KeyPair keyPair = keyGenerator.generateKeyPair();
  35. publicKey = keyPair.getPublic();
  36. privateKey = keyPair.getPrivate();
  37. cipher = Cipher.getInstance(KEY_ALGORITHM);
  38. cipher.init(Cipher.ENCRYPT_MODE, publicKey); //公钥加密
  39. byte[] encrypt = cipher.doFinal(str.getBytes());
  40. System.out.println("公钥加密后1:" + Arrays.toString(encrypt));
  41. cipher.init(Cipher.DECRYPT_MODE, privateKey);//私钥解密
  42. byte[] decrypt = cipher.doFinal(encrypt);
  43. System.out.println("私钥解密后1:" + new String(decrypt));
  44. }
  45. /**
  46. * 私钥加密,公钥解密    使用默认CIPHER_ALGORITHM_ECB1
  47. * @param str
  48. * @throws Exception
  49. */
  50. static void method2(String str) throws Exception {
  51. KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM);
  52. KeyPair keyPair = keyGenerator.generateKeyPair();
  53. publicKey = keyPair.getPublic();
  54. privateKey = keyPair.getPrivate();
  55. cipher = Cipher.getInstance(KEY_ALGORITHM);
  56. cipher.init(Cipher.ENCRYPT_MODE, privateKey); //私钥加密
  57. byte[] encrypt = cipher.doFinal(str.getBytes());
  58. System.out.println("私钥加密后2:" + Arrays.toString(encrypt));
  59. cipher.init(Cipher.DECRYPT_MODE, publicKey);//公钥解密
  60. byte[] decrypt = cipher.doFinal(encrypt);
  61. System.out.println("公钥解密后2:" + new String(decrypt));
  62. }
  63. /**
  64. * 私钥加密,公钥解密    使用CIPHER_ALGORITHM_ECB1 = RSA/ECB/PKCS1Padding
  65. * @param str
  66. * @throws Exception
  67. */
  68. static void method3(String str) throws Exception {
  69. KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM);
  70. KeyPair keyPair = keyGenerator.generateKeyPair();
  71. publicKey = keyPair.getPublic();
  72. privateKey = keyPair.getPrivate();
  73. cipher = Cipher.getInstance(CIPHER_ALGORITHM_ECB1);
  74. cipher.init(Cipher.ENCRYPT_MODE, privateKey); //私钥加密
  75. byte[] encrypt = cipher.doFinal(str.getBytes());
  76. System.out.println("私钥加密后3:" + Arrays.toString(encrypt));
  77. cipher.init(Cipher.DECRYPT_MODE, publicKey);//公钥解密
  78. byte[] decrypt = cipher.doFinal(encrypt);
  79. System.out.println("公钥解密后3:" + new String(decrypt));
  80. }
  81. }
 
 

Java加密算法 RSA的更多相关文章

  1. Java使用RSA加密算法对内容进行加密

    什么是RSA加密算法 RSA是一种典型的非对称性加密算法,具体介绍可参考阮一峰的日志 RSA算法原理 下面是使用RSA算法对传输内容进行加密的一个简要Java案例,主要用到了三个类,大体实现如下: 对 ...

  2. Java进阶(七)Java加密技术之非对称加密算法RSA

    Java加密技术(四)--非对称加密算法RSA 非对称加密算法--RSA 基本概念 非对称加密算法是一种密钥的保密方法. 非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(priv ...

  3. JAVA 非对称加密算法RSA

    非对称加密算法 RSA过程 : 以甲乙双方为例 1.初始化密钥 构建密钥对,生成公钥.私钥保存到keymap中 KeyPairGenerator ---> KeyPair --> RSAP ...

  4. Java加密技术(四)非对称加密算法RSA

    RSA      这样的算法1978年就出现了.它是第一个既能用于数据加密也能用于数字签名的算法.它易于理解和操作.也非常流行.算法的名字以发明者的名字命名:Ron Rivest, AdiShamir ...

  5. JAVA实现RSA加密,非对称加密算法

    RSA.java package org.icesnow.jeasywx.util.security; import java.security.Key; import java.security.K ...

  6. Java使用RSA加密解密及签名校验

    该工具类中用到了BASE64,需要借助第三方类库:javabase64-1.3.1.jar注意:RSA加密明文最大长度117字节,解密要求密文最大长度为128字节,所以在加密和解密的过程中需要分块进行 ...

  7. .NET和java的RSA互通,仅此而已

    .NET和java的RSA互通,仅此而已 在开始这篇文章之前,先请读者朋友阅读老唐的这两篇文章: 1.Java与.Net环境下RSA加密解密交互不成功的问题解决 2.Java与.Net环境下RSA加密 ...

  8. Java前端Rsa公钥加密,后端Rsa私钥解密(目前还不支持中文加密解密,其他都行)

    Base64工具类,可以让rsa编码的乱码变成一串字符序列 package com.utils; import java.io.ByteArrayInputStream; import java.io ...

  9. java加密算法入门(三)-非对称加密详解

    1.简单介绍 这几天一直在看非对称的加密,相比之前的两篇内容,这次看了两倍多的时间还云里雾里的,所以这篇文章相对之前的两篇,概念性的东西多了些,另外是代码的每一步我都做了介绍,方便自己以后翻阅,也方便 ...

随机推荐

  1. [原创] WINDOWS 7 精简教程之驱动精简 可用于64和32

    追风神话 发表于 2014-9-1 11:35:56   https://www.itsk.com/forum.php?mod=viewthread&tid=334491&highli ...

  2. python核心编程第六章练习6-15

    转换.(a)给出两个可识别格式的日期,比如MM/DD/YY或者DD/MM/YY格式.计算出两个日期之间的天数.(b)给出一个人的生日,计算此人从出生到现在的天数,包括所有的闰月.(c)还是上面的例子, ...

  3. iOS用ASIHttpRequest上传

    1.新建一个single view工程,导入ASIHttpRequest库,导入MobileCoreServices.CFNetwork.SystemConfiguration和libz1.2.5.d ...

  4. JAVA中怎么处理高并发的情况

    一.背景综述 并发就是可以使用多个线程或进程,同时处理(就是并发)不同的操作. 高并发的时候就是有很多用户在访问,导致系统数据不正确.糗事数据的现象.对于一些大型网站,比如门户网站,在面对大量用户访问 ...

  5. iOS开发UI篇—使用嵌套模型完成的一个简单汽车图标展示程序

    iOS开发UI篇—使用嵌套模型完成的一个简单汽车图标展示程序 一.plist文件和项目结构图 说明:这是一个嵌套模型的示例 二.代码示例: YYcarsgroup.h文件代码: // // YYcar ...

  6. iOS开发UI篇—使用storyboard创建导航控制器以及控制器的生命周期

    iOS开发UI篇—使用storyboard创建导航控制器以及控制器的生命周期 一.基本过程 新建一个项目,系统默认的主控制器继承自UIViewController,把主控制器两个文件删掉. 在stor ...

  7. 创建.htaccess文件

    在linux下创建.htaccess文件非常简单,直接新建一个文件并重命名为.htaccess即可. 下面我来讲下如何在Window下创建.htaccess文件 一般在本地电脑上是无法建立 .htac ...

  8. POJ 3216 最小路径覆盖+floyd

    Repairing Company Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 6646   Accepted: 178 ...

  9. IT公司100题-28-整数的二进制表示中1的个数

    问题描述: 输入一个整数n,求n的二进制表示中,一共有多少个1.例如n=8,二进制表示为00001000,二进制表示中有1个1.     分析: 如果一个数n不为0,那么n-1的二进制表示,与n的二进 ...

  10. 新手入门之GDB调试

    写这篇文章算是对最近两天工作的一个经验总结吧. 要让可执行文件比较方便地在DGB上调试,在用gcc编译的时候要使用-g选项. 如何使用GDB启动被调试程序? "gdb path_to_deb ...