您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > 3RSA密码算法验证
3.RSA密码算法验证Rsa.javapackageRSA;importjava.security.*;importjava.security.interfaces.*;importjava.io.*;importjava.math.*;publicclassRsa{publicstaticvoidgenerateKey(){try{KeyPairGeneratorkpg=KeyPairGenerator.getInstance(RSA);kpg.initialize(1024);KeyPairkp=kpg.genKeyPair();PublicKeypbkey=kp.getPublic();PrivateKeyprkey=kp.getPrivate();//保存公钥FileOutputStreamf1=newFileOutputStream(C:\\Users\\Administrator\\workspace\\Cryptology\\src\\RSA\\RSApubkey.dat);ObjectOutputStreamb1=newObjectOutputStream(f1);b1.writeObject(pbkey);//保存私钥FileOutputStreamf2=newFileOutputStream(C:\\Users\\Administrator\\workspace\\Cryptology\\src\\RSA\\RSAprivatekey.dat);ObjectOutputStreamb2=newObjectOutputStream(f2);b2.writeObject(prkey);}catch(Exceptione){}}publicstaticvoidencrypt(Strings)throwsException{//获取公钥及参数e,nFileInputStreamf=newFileInputStream(C:\\Users\\Administrator\\workspace\\Cryptology\\src\\RSA\\RSApubkey.dat);ObjectInputStreamb=newObjectInputStream(f);RSAPublicKeypbk=(RSAPublicKey)b.readObject();BigIntegere=pbk.getPublicExponent();BigIntegern=pbk.getModulus();System.out.println(e=+e);System.out.println(n=+n);//获取明文mbyteptext[]=s.getBytes(UTF-8);BigIntegerm=newBigInteger(ptext);//计算密文cBigIntegerc=m.modPow(e,n);System.out.println(密文c=+c);//保存密文Stringcs=c.toString();BufferedWriterout=newBufferedWriter(newOutputStreamWriter(newFileOutputStream(C:\\Users\\Administrator\\workspace\\Cryptology\\src\\RSA\\RSAencrypt.dat)));out.write(cs,0,cs.length());out.close();}publicstaticvoiddecrypt()throwsException{//读取密文BufferedReaderin=newBufferedReader(newInputStreamReader(newFileInputStream(C:\\Users\\Administrator\\workspace\\Cryptology\\src\\RSA\\RSAencrypt.dat)));Stringctext=in.readLine();BigIntegerc=newBigInteger(ctext);//读取私钥FileInputStreamf=newFileInputStream(C:\\Users\\Administrator\\workspace\\Cryptology\\src\\RSA\\RSAprivatekey.dat);ObjectInputStreamb=newObjectInputStream(f);RSAPrivateKeyprk=(RSAPrivateKey)b.readObject();BigIntegerd=prk.getPrivateExponent();//获取私钥参数及解密BigIntegern=prk.getModulus();System.out.println(d=+d);System.out.println(n=+n);BigIntegerm=c.modPow(d,n);//显示解密结果System.out.println(解密后:+m);byte[]mt=m.toByteArray();System.out.println(明文是:);for(inti=0;imt.length;i++){System.out.print((char)mt[i]);}}}IO.javapackageRSA;importjava.io.*;publicclassIO{privateStringPlainText;publicvoidGetPlainText(Stringpath){//String[]out;Filefile=newFile(path);BufferedReaderreader=null;try{reader=newBufferedReader(newFileReader(file));StringtempString=null;intline=1;while((tempString=reader.readLine())!=null){//显示行号//System.out.println(line+line+:+tempString);PlainText=tempString;line++;}reader.close();}catch(IOExceptione){e.printStackTrace();}finally{if(reader!=null){try{reader.close();}catch(IOExceptione1){}}}}publicStringgetPlainText(){returnPlainText;}publicvoidWriteCipher(Stringpath,StringCipher){Filefile=newFile(path);FileWriterfw=null;BufferedWriterwriter=null;try{fw=newFileWriter(file);writer=newBufferedWriter(fw);writer.write(Cipher);writer.newLine();//换行writer.flush();}catch(FileNotFoundExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}finally{try{writer.close();fw.close();}catch(IOExceptione){e.printStackTrace();}}}}main.javapackageRSA;importsun.security.krb5.internal.crypto.Des;importjavax.crypto.spec.DESKeySpec;importjava.io.IOException;importjava.util.Vector;publicclassmain{publicstaticvoidmain(String[]args){IOio=newIO();//RSA算法Rsarsa=newRsa();io.GetPlainText(C:\\Users\\Administrator\\workspace\\Cryptology\\src\\RSA\\PlainText.text);Stringstr=io.getPlainText();try{rsa.generateKey();rsa.encrypt(str);rsa.decrypt();}catch(Exceptione){System.out.println(e.toString());}}}运行结果:
本文标题:3RSA密码算法验证
链接地址:https://www.777doc.com/doc-2920479 .html