今天帮同学看错误,他实现了个加密算法没怎么仔细看 import java.security.SecureRandom; import java.math.BigInteger; public class CRSA{ private final static SecureRandom random=new SecureRandom(); private BigInteger SK; private BigInteger PK; private BigInteger npq; CRSA(int N){ SecureRandom md=new SecureRandom(); BigInteger p=new BigInteger(N/2,200,md); BigInteger q=new BigInteger(N/2,200,md); BigInteger f=(p.subtract(new BigInteger("1")).multiply(q.subtract(new BigInteger("1")))); npq=p.multiply(q); PK=new BigInteger("655337"); SK=PK.modInverse(f); } BigInteger encrypt(BigInteger message){ return message.modPow(PK,npq); } BigInteger decrypt(BigInteger encrypted){ return encrypted.modPow(SK,npq); } public String output(){ String str=""; str=str+"/n公钥:"+PK+"/n"; str=str+"/n私钥:"+SK+"/n"; return str; } public static void main(String[]a){ int N; byte length[]=new byte[10]; System.out.print("input N:"); try{ System.in.read(length); } catch(Exception e){} String str=new String(length); N=Integer.parseInt(str.trim()); CRSA key=new CRSA(N); BigInteger message=new BigInteger(N-1,random); BigInteger encrypt=key.encrypt(message); BigInteger decrypt=key.decrypt(encrypt); System.out.println(key.output()); System.out.println("the source info:"+message+"/n"); System.out.println("the encrypted info:"+encrypt+"/n"); System.out.println("the decrypted info:"+decrypt+"/n"); } }
java实现密码_java实现密码编码
最新推荐文章于 2021-02-28 19:39:50 发布