📄 shareframe.java
字号:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import javax.swing.BorderFactory;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.JToggleButton;
public class ShareFrame extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
ShareSec ss=new ShareSec();
BigInteger primeP;
public ShareFrame() {
try {
jbInit();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main(String[] args) {
ShareFrame shareframe = new ShareFrame();
shareframe.setVisible(true);
}
private void jbInit() throws Exception {
this.setSize(480,380);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jTextField1.setAlignmentY((float) 20.0);
jPanel6.setLayout(flowLayout2);
jPanel6.setBorder(null);
jLabel3.setAlignmentX((float) 3.0);
jPanel3.setLayout(borderLayout4);
jButton1.setText("生成子密钥");
jButton1.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(ActionEvent e){
jButton1_actionPerformed(e);
}});
jPanel2.setLayout(borderLayout2);
jLabel1.setText("门限 ");
jLabel2.setText(" 密钥对 ");
jTextField2.setPreferredSize(new Dimension(40, 21));
jTextField2.setText("");
jLabel3.setText(" 密钥 ");
jTextField3.setPreferredSize(new Dimension(210, 21));
jTextField3.setText("");
jTextField1.setPreferredSize(new Dimension(40, 21));
jPanel3.setPreferredSize(new Dimension(420, 25));
jPanel5.setPreferredSize(new Dimension(420, 200));
jPanel5.setLayout(borderLayout1);
jList1.setBorder(BorderFactory.createLoweredBevelBorder());
jList2.setBorder(BorderFactory.createLoweredBevelBorder());
jPanel9.setLayout(borderLayoutButton);
jButton2.setPreferredSize(new Dimension(20, 20));
jButton2.setText(">");
jButton2.addActionListener(
new java.awt.event.ActionListener(){
public void actionPerformed(ActionEvent e){
jButton2_actionPerformed(e);
}});
jButton3.setPreferredSize(new Dimension(20, 20));
jButton3.setToolTipText("");
jButton3.setText("<");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jButton3_actionPerformed(e);
}});
jPanel1.setPreferredSize(new Dimension(500, 540));
jPanel4.setPreferredSize(new Dimension(320, 50));
jLabel4.setText("密钥");
jToggleButton1.setText("解密");
jToggleButton1.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(ActionEvent e){
jToggleButton1_actionPerformed(e);
}});
jTextField5.setPreferredSize(new Dimension(200, 21));
jTextField4.setPreferredSize(new Dimension(320, 21));
jPanel6.add(jLabel1, null);
jPanel6.add(jTextField1);
jPanel6.add(jLabel2, null);
jPanel6.add(jTextField2, null);
jPanel6.add(jLabel3, null);
jPanel6.add(jTextField3, null);
jPanel1.add(jPanel2, null);
jPanel2.add(jPanel6, java.awt.BorderLayout.CENTER);
jPanel3.add(jTextField4, java.awt.BorderLayout.CENTER);
jPanel3.add(jButton1, java.awt.BorderLayout.EAST);
jPanel1.add(jPanel3, null);
jPanel4.add(jLabel4);
jPanel4.add(jTextField5);
jPanel4.add(jToggleButton1);
jPanel1.add(jPanel7, null);
jPanel1.add(jPanel8);
this.getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
sPanel1.getViewport().add(jList1,null);
sPanel1.setPreferredSize(new Dimension(180, 200));
jPanel5.add(sPanel1, BorderLayout.WEST);
sPanel2.getViewport().add(jList2,null);
sPanel2.setPreferredSize(new Dimension(180, 200));
jPanel5.add(sPanel2, BorderLayout.EAST);
jButton2.setPreferredSize(new Dimension(50, 40));
jPanelButton1.add(jButton2);
jPanelButton1.setPreferredSize(new Dimension(50,40));
jPanel9.add(jPanelButton1,BorderLayout.NORTH);
jButton3.setPreferredSize(new Dimension(50, 40));
jPanelButton2.add(jButton3);
jPanelButton2.setPreferredSize(new Dimension(50, 40));
jPanel9.add(jPanelButton2,BorderLayout.SOUTH);
jPanel5.add(jPanel9, BorderLayout.CENTER);
jPanel1.add(jPanel5, null);
jPanel1.add(jPanel4, null);
jPanel1.setLayout(flowLayout1);
}
JPanel jPanel1 = new JPanel();
JPanel jPanel2 = new JPanel();
JPanel jPanel3 = new JPanel();
JPanel jPanel4 = new JPanel();
JPanel jPanel5 = new JPanel();
JLabel jLabel1 = new JLabel();
JTextField jTextField1 = new JTextField();//门限
JLabel jLabel2 = new JLabel();
JTextField jTextField2 = new JTextField();//密钥数
JLabel jLabel3 = new JLabel();
JTextField jTextField3 = new JTextField(); //密钥
BorderLayout borderLayout2 = new BorderLayout();
JPanel jPanel6 = new JPanel();
JPanel jPanel7 = new JPanel();
JPanel jPanel8 = new JPanel();
BorderLayout borderLayout4 = new BorderLayout();
JTextField jTextField4 = new JTextField(); //多项式
JButton jButton1 = new JButton();
FlowLayout flowLayout1 = new FlowLayout();
BorderLayout borderLayout1 = new BorderLayout();
DefaultListModel model1 = new DefaultListModel();
JList jList1 = new JList(model1);
JScrollPane sPanel1=new JScrollPane();
JPanel jPanelButton1=new JPanel();
DefaultListModel model2 = new DefaultListModel();
JList jList2 = new JList(model2);
JScrollPane sPanel2=new JScrollPane();
JPanel jPanelButton2=new JPanel();
JPanel jPanel9 = new JPanel();
BorderLayout borderLayoutButton = new BorderLayout();
JButton jButton2 = new JButton();
JButton jButton3 = new JButton();
JLabel jLabel4 = new JLabel();
JTextField jTextField5 = new JTextField();
JToggleButton jToggleButton1 = new JToggleButton();
FlowLayout flowLayout2 = new FlowLayout();
JPanel jPanel10 = new JPanel();
public void jButton1_actionPerformed(ActionEvent e) {
int ipieces=Integer.valueOf(jTextField1.getText());
BigInteger secValue = new BigInteger(jTextField3.getText());
Polynomial poly = ss.initPoly(ipieces,secValue);
primeP = ss.getP();
jTextField4.setText(poly.toString());
String stmp;
String stmpX,stmpY;
int iKeys;
iKeys = Integer.valueOf(jTextField2.getText());
model1.clear();
model2.clear();
BigInteger bi;
Random rand = new Random(500);
for(int itmp=1;itmp<=iKeys;itmp++){
bi = new BigInteger(ShareSec.maxXLength, rand);
//bi = new BigInteger(Integer.toString(itmp));
stmpX = bi.toString();
stmpY = poly.getCalValue(bi).toString();
stmp = stmpX + "," + stmpY;
model1.addElement(stmp);
System.out.println(stmp);
}
}
public void jButton2_actionPerformed(ActionEvent e) { //>
Object[] selected=jList1.getSelectedValues();
for (Object value : selected){
model1.removeElement(value);
model2.addElement(value);
}
}
public void jButton3_actionPerformed(ActionEvent e) { //<
Object[] selected=jList2.getSelectedValues();
for (Object value : selected){
model2.removeElement(value);
model1.addElement(value);
}
}
public void jToggleButton1_actionPerformed(ActionEvent e) { //解密
Map<BigInteger,BigDecimal> testMap = new HashMap<BigInteger,BigDecimal>();
BigInteger bi;
String stmp;
String stmpX,stmpY;
for(int itmp=0;itmp<model2.size();itmp++){
stmp = (String)model2.get(itmp);
stmpX = stmp.substring(0,stmp.indexOf(","));
stmpY = stmp.substring(stmp.indexOf(",")+1,stmp.length());
bi = new BigInteger(stmpX);
testMap.put(bi, new BigDecimal(stmpY));
}
ShareSec ss = new ShareSec();
jTextField5.setText(ss.getPolynomialValue(testMap).toString());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -