rsa加密 一、先上代码
//生成两个素数 System.out.println(BigInteger.probablePrime(10, new Random())); System.out.println(BigInteger.probablePrime(10, new Random())); //653 857 //System.out.println(653*857); //System.out.println(652*856); // 653*857 559621 A //652*856 558112 B //重新生成一个素数 公钥829 必须小于数字B int A=559621; int B=558112; for(int i=0;i<846216;i++){ if(((829*i)%B)==1){ System.out.println(i); } } // 11445 569557 私钥 公私并不是一一对应 一个公钥可有有N个私钥 //模指运算 第一个数的第二个数次方除以第三个数取余 BigInteger s=new BigInteger("123456").modPow(new BigInteger("829"), new BigInteger(Integer.toString(A))); System.out.println("加密后的数据:"+s);//407944 //私钥1解密 BigInteger s1=new BigInteger("407944").modPow(new BigInteger("11445"), new BigInteger(Integer.toString(A))); //私钥2解密 BigInteger s2=new BigInteger("407944").modPow(new BigInteger("569557"), new BigInteger(Integer.toString(A))); System.out.println(s1+"--"+s2); //123456--123456