Java加密算法 RSA
2024-10-12 15:52:14
分类:
JAVA(57)
公钥加密也称为非对称加密、速度慢、加密和解密的钥匙不相同,某一个人持有私钥,任何人都可以知道公钥
- 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));
- }
- }
最新文章
- python学习 小游戏
- 水星Mercury路由器端口映射设置图文方法
- 【转】 iOS 开发之静态库.a和动态库详解 -- 不错
- 插值和空间分析(一)_探索性数据分析(R语言)
- php文件夹与文件目录操作函数
- JavaScript---网络编程(1)-介绍、变量、运算符与语句
- Win7如何添加局域网内的网络打印机
- 公布一个软件,轻新视频录播程序,H264/AAC录制视音频,保存FLV,支持RTMP直播
- iPhone 6 首发无大陆,DevStore要去香港吗?
- jquery serialize 和 console 漫谈
- 久未更 ~ 四之 —— Vsftpd出现 Failed to start Vsftpd ftp daemon错误
- SQL优化 MySQL版 - 避免索引失效原则(二)
- git教程:远程仓库
- [转载]js正则表达式/replace替换变量方法
- 关于ascii码的一些内容
- HDU 4607 Park Visit (树的最长链)
- Ubuntu下安装vsftpd
- Angular2学习笔记一
- C# 算法题系列(二) 各位相加、整数反转、回文数、罗马数字转整数
- 安装caffe框架所需文件
热门文章
- Gson手动序列化POJO(工具类)
- python——初识socket
- c/c++ 软件集成 安装和可卸载软件
- thinkPHP 数字字典
- FIS--关于下载php后的配置(启动fis的调试服务器(注意添加 --no-rewrite 参数),如果报错 没有php-cgi环境,请 安装 它,并把php-cgi命令加到系统的环境变量)
- 线性表(一)——数组循环右移算法
- JS如何判断包括IE11在内的IE浏览器 <;转载>;
- win server2008R2安装framework1.1后,在应用池中不能编辑选择framework1.1的解决办法
- Input 值改变触发事件
- 【仿真】【modelsim】:verilog功能仿真流程