RSA 公钥算法Java代码带界面.docx

上传人:b****8 文档编号:11337885 上传时间:2023-02-28 格式:DOCX 页数:20 大小:17.72KB
下载 相关 举报
RSA 公钥算法Java代码带界面.docx_第1页
第1页 / 共20页
RSA 公钥算法Java代码带界面.docx_第2页
第2页 / 共20页
RSA 公钥算法Java代码带界面.docx_第3页
第3页 / 共20页
RSA 公钥算法Java代码带界面.docx_第4页
第4页 / 共20页
RSA 公钥算法Java代码带界面.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

RSA 公钥算法Java代码带界面.docx

《RSA 公钥算法Java代码带界面.docx》由会员分享,可在线阅读,更多相关《RSA 公钥算法Java代码带界面.docx(20页珍藏版)》请在冰豆网上搜索。

RSA 公钥算法Java代码带界面.docx

RSA公钥算法Java代码带界面

RSA公钥加密算法代码

package.rsa.service;

publicclassUnPrimeExceptionextendsException{

publicUnPrimeException(){

}

publicUnPrimeException(Stringmessage){

super(message);

}

publicUnPrimeException(Throwablecause){

super(cause);

}

publicUnPrimeException(Stringmessage,Throwablecause){

super(message,cause);

}

}

------------------------------------------------------------------------------------------------

package.rsa.service;

publicinterfaceDataInfo{

publicMyDatasendData(longp,longq,longpublic_key,longdeprime)throwsUnPrimeException;

}

--------------------------------------------------------------------------------------------------

package.rsa.service;

publicclassDataDealimplementsDataInfo{

@Override

publicMyDatasendData(longp,longq,longpublic_key,longdeprime)

throwsUnPrimeException{

MyDatadata;

if(!

this.primeNumber(q)||!

this.primeNumber(q)){

thrownewUnPrimeException("非素数,请重新输入!

");

}elseif((deprime>=this.getF(p,q))||

(this.gcd(this.getF(p,q),deprime)!

=1)){

thrownewUnPrimeException("输入的公钥不符合条件!

");

}else{

data=newMyData(p,q,public_key,deprime);

}

returndata;

}

//判断是否为素数

publicbooleanprimeNumber(longt){

longk=0;

k=(long)Math.sqrt((double)t);

booleanflag=true;

outer:

for(inti=2;i<=k;i++){

if((t%i)==0){

flag=false;

breakouter;

}

}

returnflag;

}

privatelonggcd(longa,longb){//最大公约数

longgcd;

if(b==0)gcd=a;

elsegcd=gcd(b,a%b);

returngcd;

}

privatelonggetF(longp,longq){

return(p-1)*(q-1);

}

}

---------------------------------------------------------------------------------------------------------

package.rsa.service;

publicclassMyData{

privatelongp;

privatelongq;

privatelongpublic_key;

privatelongdeprime;

publicMyData(){

super();

}

publicMyData(longp,longq,longpublic_key,longdeprime){

super();

this.p=p;

this.q=q;

this.public_key=public_key;

this.deprime=deprime;

}

publiclonggetP(){

returnp;

}

publicvoidsetP(longp){

this.p=p;

}

publiclonggetQ(){

returnq;

}

publicvoidsetQ(longq){

this.q=q;

}

publiclonggetDeprime(){

returndeprime;

}

publicvoidsetDeprime(longdeprime){

this.deprime=deprime;

}

publiclonggetPublic_key(){

returnpublic_key;

}

publicvoidsetPublic_key(longpublic_key){

this.public_key=public_key;

}

publicbooleantoPrime(){//判断最大公约数是否为1

if(this.gcd(p,q)!

=1)

returnfalse;

returntrue;

}

//求最大公约数

publiclonggcd(longa,longb){

longgcd;

if(b==0)gcd=a;

elsegcd=gcd(b,a%b);

returngcd;

}

publiclonggetN(){

returnp*q;

}

publiclonggetF(){

return(p-1)*(q-1);

}

publiclongcolum(longy,longn,longkey){//加密/解密

longmul;

if(key==1)mul=y%n;

elsemul=y*this.colum(y,n,key-1)%n;

returnmul;

}

//计算得到密匙

publiclonggetPrivate_key(){

longf=this.getF();

longprivate_key=1;

longvalue=1;

for(longi=1;;i++){

value=i*f+1;

if((value%this.public_key==0)&&(value/this.public_key

private_key=value/this.public_key;

break;

}

}

returnprivate_key;

}

//得到密文

publiclonggetMyPrime(){

returnthis.colum(this.deprime,this.getN(),this.public_key);

}

publicStringgetStrPrime(){

returnLong.toString(this.getMyPrime());

}

//得到解密的文件

publiclonggetMyDeprime(){

returnthis.colum(this.getMyPrime(),this.getN(),this.getPrivate_key());

}

publicStringgetStrDeprime(){

returnLong.toString(this.getMyDeprime());

}

}

---------------------------------------------------------------------------------------------------------

package.rsa.frame;

importjava.awt.BorderLayout;

importjava.awt.Component;

importjava.awt.FlowLayout;

importjava.awt.GridLayout;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjava.awt.event.WindowAdapter;

importjava.awt.event.WindowEvent;

importjavax.swing.JButton;

importjavax.swing.JFrame;

importjavax.swing.JLabel;

importjavax.swing.JOptionPane;

importjavax.swing.JPanel;

importjavax.swing.JPasswordField;

importjavax.swing.JTextField;

importjavax.swing.border.EmptyBorder;

publicclassSenderFrameextendsJFrame{

/**

*

*/

privatestaticfinallongserialVersionUID=1L;

publicSenderFrame(){

init();

}

publicvoidinit(){

setTitle("Sender");

setSize(300,220);

setContentPane(createContentPane());

addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

client.exit(SenderFrame.this);

}

});

}

privateJPanelcreateContentPane(){

JPanelp=newJPanel(newBorderLayout());

p.add(BorderLayout.NORTH,

newJLabel("发送数据",JLabel.CENTER));

p.add(BorderLayout.CENTER,createCenterPane());

p.add(BorderLayout.SOUTH,createBtnPane());

p.setBorder(newEmptyBorder(6,6,6,6));

returnp;

}

privateJPanelcreateCenterPane(){

JPanelp=newJPanel(newBorderLayout());

p.add(BorderLayout.NORTH,createIdPwdPane());

p.setBorder(newEmptyBorder(6,6,6,6));

returnp;

}

privateJPanelcreateIdPwdPane(){

JPanelp=newJPanel(newGridLayout(2,2,0,6));

p.add(createP());

p.add(createQ());

p.add(createPublic_key());

p.add(createPrime());

returnp;

}

privateJPanelcreateP(){

JPanelp=newJPanel(newBorderLayout(5,0));

p.add(BorderLayout.WEST,newJLabel("素数p:

"));

idP=newJPasswordField();

idP.enableInputMethods(true);

p.add(BorderLayout.CENTER,idP);

returnp;

}

privateJPanelcreateQ(){

JPanelp=newJPanel(newBorderLayout(5,0));

p.add(BorderLayout.WEST,newJLabel("素数q:

"));

idQ=newJPasswordField();

idQ.enableInputMethods(true);

p.add(BorderLayout.CENTER,idQ);

returnp;

}

privateJPanelcreatePublic_key(){

JPanelp=newJPanel(newBorderLayout(5,0));

p.add(BorderLayout.WEST,newJLabel("公钥:

"));

public_key=newJTextField();

p.add(BorderLayout.CENTER,public_key);

returnp;

}

privateJPanelcreatePrime(){

JPanelp=newJPanel(newBorderLayout(5,0));

p.add(BorderLayout.WEST,newJLabel("明文:

"));

prime=newJTextField();

p.add(BorderLayout.CENTER,prime);

returnp;

}

privateJPanelcreateBtnPane(){

JPanelp=newJPanel(newFlowLayout());

JButtonlogin=newJButton("发送");

JButtoncancel=newJButton("取消");

p.add(login);

p.add(cancel);

getRootPane().setDefaultButton(login);

login.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

client.send();

}

});

cancel.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

client.exit(SenderFrame.this);

}

});

returnp;

}

privateClientclient;

publicvoidsetClient(Clientclient){

this.client=client;

}

privateJTextFieldpublic_key;

privateJTextFieldprime;

privateJPasswordFieldidP;

privateJPasswordFieldidQ;

publiclonggetP(){

char[]str=idP.getPassword();

Strings=newString(str);

returnInteger.parseInt(s);

}

publiclonggetQ(){

char[]q=idQ.getPassword();

Strings=newString(q);

returnInteger.parseInt(s);

}

publiclonggetPrime(){

Stringstr=prime.getText();

returnInteger.parseInt(str);

}

publiclonggetPublic_key(){

Stringstr=public_key.getText();

returnInteger.parseInt(str);

}

}

-----------------------------------------------------------------------------------------------------------

package.rsa.frame;

importjava.awt.BorderLayout;

importjava.awt.FlowLayout;

importjava.awt.GridLayout;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjava.awt.event.WindowAdapter;

importjava.awt.event.WindowEvent;

importjavax.swing.JButton;

importjavax.swing.JFrame;

importjavax.swing.JLabel;

importjavax.swing.JPanel;

importjavax.swing.border.EmptyBorder;

publicclassReceiverFrameextendsJFrame{

/**

*

*/

privatestaticfinallongserialVersionUID=1L;

publicReceiverFrame(){

this.shows();

}

publicvoidshows(){

setTitle("Receiver");

setSize(300,180);

setContentPane(createContentPane());

addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

System.exit(0);

}

});

}

privateJPanelcreateContentPane(){

JPanelp=newJPanel(newBorderLayout());

p.add(BorderLayout.NORTH,

newJLabel("接收数据",JLabel.CENTER));

p.add(BorderLayout.CENTER,createCenterPane());

p.add(BorderLayout.SOUTH,createBtnPane());

p.setBorder(newEmptyBorder(6,6,6,6));

returnp;

}

privateJPanelcreateCenterPane(){

JPanelp=newJPanel(newBorderLayout());

p.add(BorderLayout.NORTH,createCipPane());

p.setBorder(newEmptyBorder(6,6,6,6));

returnp;

}

privateJPanelcreateCipPane(){

JPanelp=newJPanel(newGridLayout(2,1,0,6));

p.add(createIdPane());

p.add(createPwdPane());

returnp;

}

privateJPanelcreateIdPane(){

JPanelp=newJPanel(newBorderLayout(5,0));

p.add(BorderLayout.WEST,newJLabel("密文:

"));

cipField=newJLabel();

p.add(BorderLayout.CENTER,cipField);

returnp;

}

privateJPanelcreatePwdPane(){

JPanelp=newJPanel(newBorderLayout(5,0));

p.add(BorderLayout.WEST,newJLabel("解密:

"));

decipField=newJLabel();

p.add(BorderLayout.CENTER,decipField);

returnp;

}

privateJPanelcreateBtnPane(){

JPanelp=newJPanel(newFlowLayout());

JButtonbutton1=newJButton("解密");

JButtonbutton=newJButton("确认");

p.add(button1);

p.add(button);

getRootPane().setDefaultButton(button);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 中职中专

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1