一、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算法进行加密和解密相关推荐

  1. RSA算法(加密与解密)

    RSA算法介绍: RSA算法即RSA加密算法,这是一种非对称加密算法.在公开密钥加密和电子商业中RSA被广泛使用.RSA是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi S ...

  2. RSA算法与加密解密

    RSA算法与加密解密 什么是RSA算法(RSA algorithm) 什么是非对称加密算法 RSA加密解密原理 算法攻击和蓝桥杯2018年省赛题目 RSA的小指数攻击 蓝桥杯2018年省赛题目 第一步 ...

  3. .NET实现RSA算法的加密解密

    在项目中经常会使用到一些加密场合,涉及的加密算法常有RSA算法,base32算法,恰好最近有用到RSA加密解密算法,以此篇文章记录一下. RSA加密是一种非对称加密.可以在不直接传递密钥的情况下,完成 ...

  4. (JS-PHP)使用RSA算法进行加密通讯

    用户名密码明文直接POST到后端,很容易被别人从监听到.注:包括使用MD5等哈希函数处理后的数据,这里也算做明文(现在MD5爆破网站已经很多了~).对安全性要求较高的网站,比如银行和大型企业等都会使用 ...

  5. (三)--Openssl 实现国密算法(加密和解密)

    上一次讲了产生密钥,这次我们讲一下加密解密的实现. 先说一下加密解密的流程,一下这些内容都是从国密局发布的国密标准文档里面摘录出来的.大家可以去国密局的网站上自己下载. 下列符号适用于本部分. A,B ...

  6. js rsa解密中文乱码,js中文rsa,中文加密偶尔解密不出来

    https://blog.csdn.net/lionking1990/article/details/106092990 直接改动jsencrypt.js文件,在文件最下方的 JSEncrypt.ve ...

  7. 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 是 ...

  8. c语言 rsa算法 分段,python3 实现RSA算法分段加密解密

    参考博客地址: https://blog.csdn.net/qq_33414271/article/details/78424951 https://www.cnblogs.com/piperck/p ...

  9. rsa php前台加密后台解密源码,使用RSA实现前端公钥加密后端私钥解密

    项目中在用户登录时需要进行用户名和密码加密,这里选用了RSA非对称加密的方式. 公钥私钥:OpenSSL的公钥私钥(Node crypto模块限制) 前端: jsencrypt库加密 后端: Node ...

最新文章

  1. 英国前首相:为什么欧洲没有诞生互联网巨头?
  2. C++引用(Reference)
  3. 第 十 一 天 : 复 习 完 ( 四 )
  4. java 拖拽目录_Java 7:如何在Java中实现拖放?
  5. python基础入门(2)
  6. Aqua Data Studio数据库连接工具解决Sybase中文乱码问题
  7. layer关闭当前窗口并刷新父窗口
  8. 基于标签传递的重叠社区发现算法(COPRA算法)
  9. off-by-one
  10. 至强服务器系列,2020 最新 至强 Xeon 服务器系列 CPU天梯图
  11. 耳机基本知识及评判指标
  12. 以Crotex M3为例讲解stm32芯片内部原理
  13. 16.体测成绩判定(c函数调用)
  14. 网络安全从业人员能力图谱
  15. 数据结构:一元多项式(线性表)
  16. 基于FPGA的数字示波器的触发/采集
  17. php中怎样把图片改大,PHP怎么批量修改图片大小?
  18. 详解人工智能技术如何应用到智能家居
  19. 双时格林函数应用介绍
  20. 阶梯电价计算:电价分三个档次,一档:0~110(含110)度电,每度电0.5元;二挡:110~210(含210)度电,超出110部分每度电0.55元;三挡:超过210度电,超出210部分每度电0.70

热门文章

  1. 亚马逊SP-API自发货标记发货对接
  2. Spark技能成长,CSDN就go了!
  3. 数据库 SQL Server错误18456,window身份验证登录失败解决办法
  4. win7系统没有计算机睡眠状态,如何解决win7系统无法进入睡眠状态
  5. 51单片机_7-1独立按键控制流水灯方向
  6. Odoo隐藏应用模块
  7. 系列微课|《Python程序设计(第3版)》第4章
  8. ST-LINK Utility + ST LINK+ STM32G474 erase chip fails
  9. 〖Python 数据库开发实战 - Python与MySQL交互篇⑧〗- 项目实战 - 开发新闻管理系统(项目展示)
  10. 商家们为何在私域流量展开竞争?