RSA算法进行加密和解密
一、RSA简介
RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA公开密钥密码体制。所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。
二、Java代码实现RSA加解密,在这里我们使用私钥加密,公钥解密的算法
①使用RSA算法对字符串进行私钥加密
package ThreadPool;import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;import javax.crypto.Cipher;
import java.security.*;
import java.security.interfaces.RSAKey;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;public class RSATest {/*** 加解密时所需的密码,内部使用可以直接写死,外部调用动态传输可以直接在形参中定义*/private static final String password ="gjh%^&(& {}77";/*** 使用RSA对字符串进行私钥加密* @param str* @return*/public static String jdkRASEncode(String str){try {//初始化密钥KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");keyPairGenerator.initialize(512,new SecureRandom(password.getBytes()));KeyPair keyPair =keyPairGenerator.generateKeyPair();RSAPrivateKey rsaPrivateKey = (RSAPrivateKey)keyPair.getPrivate();//私钥加密,公钥解密,私钥加密部分PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(rsaPrivateKey.getEncoded());KeyFactory keyFactory = KeyFactory.getInstance("RSA");PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);Cipher cipher = Cipher.getInstance("RSA");cipher.init(Cipher.ENCRYPT_MODE,privateKey);byte [] bytes = cipher.doFinal(str.getBytes());return Base64.encode(bytes);}catch (Exception e){e.printStackTrace();}return null;}public static void main(String[] args) {String string = "welcome to first RSA";String str = jdkRASEncode(string);System.out.println(str);}
}
②.对经过RSA算法加密后的字符串进行公钥解密
package ThreadPool;import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;import javax.crypto.Cipher;
import java.security.*;
import java.security.interfaces.RSAKey;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;public class RSATest {/*** 加解密时所需的密码,内部使用可以直接写死,外部调用动态传输可以直接在形参中定义*/private static final String password ="gjh%^&(& {}77";/*** 使用RSA进行公钥解密* @param str* @return*/public static String jdkRASDecode(String str){try {//初始化密钥KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");keyPairGenerator.initialize(512,new SecureRandom(password.getBytes()));KeyPair keyPair =keyPairGenerator.generateKeyPair();RSAPublicKey rsaPublicKey = (RSAPublicKey) keyPair.getPublic();//私钥加密,公钥解密,公钥解密部分X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(rsaPublicKey.getEncoded());KeyFactory keyFactory = KeyFactory.getInstance("RSA");PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec);Cipher cipher = Cipher.getInstance("RSA");cipher.init(Cipher.DECRYPT_MODE,publicKey);byte [] byteContent = Base64.decode(str);byte [] bytes = cipher.doFinal(byteContent);return new String(bytes);}catch (Exception e){e.printStackTrace();}return null;}public static void main(String[] args) {String string = "welcome to first RSA";String str = jdkRASEncode(string);System.out.println(jdkRASDecode(str));}
}
RSA算法进行加密和解密相关推荐
- RSA算法(加密与解密)
RSA算法介绍: RSA算法即RSA加密算法,这是一种非对称加密算法.在公开密钥加密和电子商业中RSA被广泛使用.RSA是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi S ...
- RSA算法与加密解密
RSA算法与加密解密 什么是RSA算法(RSA algorithm) 什么是非对称加密算法 RSA加密解密原理 算法攻击和蓝桥杯2018年省赛题目 RSA的小指数攻击 蓝桥杯2018年省赛题目 第一步 ...
- .NET实现RSA算法的加密解密
在项目中经常会使用到一些加密场合,涉及的加密算法常有RSA算法,base32算法,恰好最近有用到RSA加密解密算法,以此篇文章记录一下. RSA加密是一种非对称加密.可以在不直接传递密钥的情况下,完成 ...
- (JS-PHP)使用RSA算法进行加密通讯
用户名密码明文直接POST到后端,很容易被别人从监听到.注:包括使用MD5等哈希函数处理后的数据,这里也算做明文(现在MD5爆破网站已经很多了~).对安全性要求较高的网站,比如银行和大型企业等都会使用 ...
- (三)--Openssl 实现国密算法(加密和解密)
上一次讲了产生密钥,这次我们讲一下加密解密的实现. 先说一下加密解密的流程,一下这些内容都是从国密局发布的国密标准文档里面摘录出来的.大家可以去国密局的网站上自己下载. 下列符号适用于本部分. A,B ...
- js rsa解密中文乱码,js中文rsa,中文加密偶尔解密不出来
https://blog.csdn.net/lionking1990/article/details/106092990 直接改动jsencrypt.js文件,在文件最下方的 JSEncrypt.ve ...
- java elgamal_ElGamal算法进行加密和解密的基本原理及实现
1.准备步骤 1)取大素数 p 和 g(g < p,g 最好是 p 的素根) 注解:若 g 是素数 p 的一个素根,则 g mod p, g^2 mod p , -, g^p-1 mod p 是 ...
- c语言 rsa算法 分段,python3 实现RSA算法分段加密解密
参考博客地址: https://blog.csdn.net/qq_33414271/article/details/78424951 https://www.cnblogs.com/piperck/p ...
- rsa php前台加密后台解密源码,使用RSA实现前端公钥加密后端私钥解密
项目中在用户登录时需要进行用户名和密码加密,这里选用了RSA非对称加密的方式. 公钥私钥:OpenSSL的公钥私钥(Node crypto模块限制) 前端: jsencrypt库加密 后端: Node ...
最新文章
- 英国前首相:为什么欧洲没有诞生互联网巨头?
- C++引用(Reference)
- 第 十 一 天 : 复 习 完 ( 四 )
- java 拖拽目录_Java 7:如何在Java中实现拖放?
- python基础入门(2)
- Aqua Data Studio数据库连接工具解决Sybase中文乱码问题
- layer关闭当前窗口并刷新父窗口
- 基于标签传递的重叠社区发现算法(COPRA算法)
- off-by-one
- 至强服务器系列,2020 最新 至强 Xeon 服务器系列 CPU天梯图
- 耳机基本知识及评判指标
- 以Crotex M3为例讲解stm32芯片内部原理
- 16.体测成绩判定(c函数调用)
- 网络安全从业人员能力图谱
- 数据结构:一元多项式(线性表)
- 基于FPGA的数字示波器的触发/采集
- php中怎样把图片改大,PHP怎么批量修改图片大小?
- 详解人工智能技术如何应用到智能家居
- 双时格林函数应用介绍
- 阶梯电价计算:电价分三个档次,一档:0~110(含110)度电,每度电0.5元;二挡:110~210(含210)度电,超出110部分每度电0.55元;三挡:超过210度电,超出210部分每度电0.70
热门文章
- 亚马逊SP-API自发货标记发货对接
- Spark技能成长,CSDN就go了!
- 数据库 SQL Server错误18456,window身份验证登录失败解决办法
- win7系统没有计算机睡眠状态,如何解决win7系统无法进入睡眠状态
- 51单片机_7-1独立按键控制流水灯方向
- Odoo隐藏应用模块
- 系列微课|《Python程序设计(第3版)》第4章
- ST-LINK Utility + ST LINK+ STM32G474 erase chip fails
- 〖Python 数据库开发实战 - Python与MySQL交互篇⑧〗- 项目实战 - 开发新闻管理系统(项目展示)
- 商家们为何在私域流量展开竞争?