Java加密算法 RSA

公钥加密也称为非对称加密、速度慢、加密和解密的钥匙不相同,某一个人持有私钥,任何人都可以知道公钥
- package com.stone.security;
- import java.security.KeyPair;
- import java.security.KeyPairGenerator;
- import java.security.PrivateKey;
- import java.security.PublicKey;
- import java.util.Arrays;
- import javax.crypto.Cipher;
- /**
- * RSA算法 公钥加密 非对称加密
- * @author stone
- * @date 2014-03-11 00:28:38
- */
- public class RSA {
- public static final String KEY_ALGORITHM = "RSA";
- public static final String CIPHER_ALGORITHM_ECB1 = "RSA/ECB/PKCS1Padding";
- public static final String CIPHER_ALGORITHM_ECB2 = "RSA/ECB/OAEPWithSHA-1AndMGF1Padding"; //不能用
- public static final String CIPHER_ALGORITHM_ECB3 = "OAEPWithSHA-256AndMGF1Padding"; //不能用
- static PublicKey publicKey;
- static PrivateKey privateKey;
- static Cipher cipher;
- static KeyPair keyPair;
- public static void main(String[] args) throws Exception {
- method1("斯柯达U*(Sfsad7f()*^%%$");
- method2("斯柯达U*(Sfsad7f()*^%%$");
- method3("斯柯达U*(Sfsad7f()*^%%$");
- }
- /**
- * 公钥加密,私钥解密 使用默认CIPHER_ALGORITHM_ECB1
- * @param str
- * @throws Exception
- */
- static void method1(String str) throws Exception {
- KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM);
- KeyPair keyPair = keyGenerator.generateKeyPair();
- publicKey = keyPair.getPublic();
- privateKey = keyPair.getPrivate();
- cipher = Cipher.getInstance(KEY_ALGORITHM);
- cipher.init(Cipher.ENCRYPT_MODE, publicKey); //公钥加密
- byte[] encrypt = cipher.doFinal(str.getBytes());
- System.out.println("公钥加密后1:" + Arrays.toString(encrypt));
- cipher.init(Cipher.DECRYPT_MODE, privateKey);//私钥解密
- byte[] decrypt = cipher.doFinal(encrypt);
- System.out.println("私钥解密后1:" + new String(decrypt));
- }
- /**
- * 私钥加密,公钥解密 使用默认CIPHER_ALGORITHM_ECB1
- * @param str
- * @throws Exception
- */
- static void method2(String str) throws Exception {
- KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM);
- KeyPair keyPair = keyGenerator.generateKeyPair();
- publicKey = keyPair.getPublic();
- privateKey = keyPair.getPrivate();
- cipher = Cipher.getInstance(KEY_ALGORITHM);
- cipher.init(Cipher.ENCRYPT_MODE, privateKey); //私钥加密
- byte[] encrypt = cipher.doFinal(str.getBytes());
- System.out.println("私钥加密后2:" + Arrays.toString(encrypt));
- cipher.init(Cipher.DECRYPT_MODE, publicKey);//公钥解密
- byte[] decrypt = cipher.doFinal(encrypt);
- System.out.println("公钥解密后2:" + new String(decrypt));
- }
- /**
- * 私钥加密,公钥解密 使用CIPHER_ALGORITHM_ECB1 = RSA/ECB/PKCS1Padding
- * @param str
- * @throws Exception
- */
- static void method3(String str) throws Exception {
- KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM);
- KeyPair keyPair = keyGenerator.generateKeyPair();
- publicKey = keyPair.getPublic();
- privateKey = keyPair.getPrivate();
- cipher = Cipher.getInstance(CIPHER_ALGORITHM_ECB1);
- cipher.init(Cipher.ENCRYPT_MODE, privateKey); //私钥加密
- byte[] encrypt = cipher.doFinal(str.getBytes());
- System.out.println("私钥加密后3:" + Arrays.toString(encrypt));
- cipher.init(Cipher.DECRYPT_MODE, publicKey);//公钥解密
- byte[] decrypt = cipher.doFinal(encrypt);
- System.out.println("公钥解密后3:" + new String(decrypt));
- }
- }
Java加密算法 RSA的更多相关文章
- Java使用RSA加密算法对内容进行加密
什么是RSA加密算法 RSA是一种典型的非对称性加密算法,具体介绍可参考阮一峰的日志 RSA算法原理 下面是使用RSA算法对传输内容进行加密的一个简要Java案例,主要用到了三个类,大体实现如下: 对 ...
- Java进阶(七)Java加密技术之非对称加密算法RSA
Java加密技术(四)--非对称加密算法RSA 非对称加密算法--RSA 基本概念 非对称加密算法是一种密钥的保密方法. 非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(priv ...
- JAVA 非对称加密算法RSA
非对称加密算法 RSA过程 : 以甲乙双方为例 1.初始化密钥 构建密钥对,生成公钥.私钥保存到keymap中 KeyPairGenerator ---> KeyPair --> RSAP ...
- Java加密技术(四)非对称加密算法RSA
RSA 这样的算法1978年就出现了.它是第一个既能用于数据加密也能用于数字签名的算法.它易于理解和操作.也非常流行.算法的名字以发明者的名字命名:Ron Rivest, AdiShamir ...
- JAVA实现RSA加密,非对称加密算法
RSA.java package org.icesnow.jeasywx.util.security; import java.security.Key; import java.security.K ...
- Java使用RSA加密解密及签名校验
该工具类中用到了BASE64,需要借助第三方类库:javabase64-1.3.1.jar注意:RSA加密明文最大长度117字节,解密要求密文最大长度为128字节,所以在加密和解密的过程中需要分块进行 ...
- .NET和java的RSA互通,仅此而已
.NET和java的RSA互通,仅此而已 在开始这篇文章之前,先请读者朋友阅读老唐的这两篇文章: 1.Java与.Net环境下RSA加密解密交互不成功的问题解决 2.Java与.Net环境下RSA加密 ...
- Java前端Rsa公钥加密,后端Rsa私钥解密(目前还不支持中文加密解密,其他都行)
Base64工具类,可以让rsa编码的乱码变成一串字符序列 package com.utils; import java.io.ByteArrayInputStream; import java.io ...
- java加密算法入门(三)-非对称加密详解
1.简单介绍 这几天一直在看非对称的加密,相比之前的两篇内容,这次看了两倍多的时间还云里雾里的,所以这篇文章相对之前的两篇,概念性的东西多了些,另外是代码的每一步我都做了介绍,方便自己以后翻阅,也方便 ...
随机推荐
- AlwaysOn与数据库镜像端点问题
今天在搭建一个测试环境的时候发现一个问题,我将AlwaysOn环境中某节点上的某个非可用性组里的数据库想实时备份到另外一台服务器上,因此我找了一个没有加域的工作组的服务器,与AlwaysOn主节点去搭 ...
- OneProxy的功能与限制
数据库中间件的核心目的之一就是尽可能透明的线性扩展数据库能力.其主要功能介绍参考(http://www.onexsoft.com/zh/oneproxy.html). 但是透明只是相对的,下面就简要 ...
- [kylin] 部署kylin服务
一.工具准备 zookeeper3.4.6 (hadoop.hbase 管理工具) Hadoop. Hbase1.1.4 Kylin1.5.0-HBase1.1.3 Jdk1.7.80 Hive 二. ...
- css3旋转倾斜3d小动画
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- google高级搜索
ext:php program_listing intitle:MythWeb.Program.Listing inurl:preferences.ini “[emule]” intitle:”Ind ...
- SortedSet有序集合类型
SortedSet相当于C#中的SortDictionary类型,表示一个有序集合. 常用操作有,zadd命令将一个或多个元素及其score值加入到有序集key中. zrange命令返回有序集key中 ...
- iOS开发拓展篇—UIDynamic(重力行为+碰撞检测)
iOS开发拓展篇—UIDynamic(重力行为+碰撞检测) 一.重力行为 说明:给定重力方向.加速度,让物体朝着重力方向掉落 1.方法 (1)UIGravityBehavior的初始化 - (inst ...
- Jenkins+Jmeter+Ant 接口持续集成(转)
来源:https://testerhome.com/topics/5186 为什么要用Jmeter做接口测试 当选择这套方案的时候,很多人会问,为什么选择Jmeter做Case管理?为什么不自己写框架 ...
- sql 创建数据库
CREATE DATABASE [NET_CN] ON PRIMARY( NAME=N'NET_CN',FILENAME= N'D:\Data\NET_CN.mdf',SIZE = 5120KB,MA ...
- const 放在函数后
const 放在函数后表示这个函数是常成员函数, 常成员函数是不能改变成员变量值的函数.const 限定符,它把一个对象转换成一个常量.举例:为了使成员函数的意义更加清楚,我们可在不改变对象的成员函数 ...