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