Java简单实现RSA加解密算法
由于时间匆忙,笔者抽了点时间简单写了一个RSA加密算法的实现,重在体现RSA算法的经典核心思想,因此没有考虑到其他数据溢出、运行效率等Bug或问题,后续代码的优化和整理劳请各位读者提出意见,谢谢
算法思想:
算法实现
使用工具:Java
环境平台:Eclipse , jdk11.0.2 , Win10
RSA_Algrithm类:
包含了算法的核心参数p,q,n,fn,e,d
以及
判断用户输入的两个数是否为质数的判断函数inputTwoPrimes
随机生成0~fn且与fn互质的公钥的生成函数generatePublicKey_e
通过公钥求解对应的私钥的函数generatePrivateKey_d
加密函数encryption 和 解密函数decryption
代码如下:
package rsa_algrithm;
import java.util.Scanner;
public class RSA_Algrithm {
protected static int p ; //输入的第一个素数
protected static int q ; //输入的第二个素数
protected static int n ; //加密和解密时的模值
protected static int fn ; //通过公钥求解私钥时的模值
protected static int e; //公钥
protected static int d; //私钥
//输入两个不相同的质数
public static void inputTwoPrimes() {
while(p == q) {
//p和q的初始没有赋,所以初值都为0
//输入第一个质数
do {
System.out.print("Please input the first prime: ");
Scanner scanner1 = new Scanner (System.in );
p = scanner1.nextInt();
Input.inputPrime(p);
}while(Input.flag == false);
//输入第二个质数
do {
System.out.print("Please input the second prime: ");
Scanner scanner2 = new Scanner (System.in )