📄 hraskeygenerator.java~
字号:
privatekey = i; jTextArea1.append("p = " + p + ",\tq = " + q + "\n"); jTextArea1.append("Public key is\t" + publickey + "\nPrivate key is\t" + privatekey + "\nModulus is\t" + modulus + "\n\n"); return; } } jTextArea1.append("Could not find a private key in [ 0 - " + maximum + " ]\n"); }//GEN-LAST:event_jButton3ActionPerformed private void jCheckBox1StateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jCheckBox1StateChanged // 張棟僐乕僪傪偙偙偵捛壛偟傑偡: // Random status changed if (jCheckBox1.isSelected()){ this.jTextField1.setText("3"); this.jTextField2.setText("300"); this.jLabel1.setText("From"); this.jLabel2.setText("To"); }else{ this.jTextField1.setText(""); this.jTextField2.setText(""); this.jLabel1.setText("Origin1"); this.jLabel2.setText("Origin2"); } }//GEN-LAST:event_jCheckBox1StateChanged private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed // 張棟僐乕僪傪偙偙偵捛壛偟傑偡: // Run jComboBox1.setEditable(false); this.jComboBox1.removeAllItems(); boolean rand = jCheckBox1.isSelected(); this.p = -1; this.q = -1; this.publickey = -1; this.privatekey = -1; try{ maximum = Integer.valueOf(jTextField5.getText()).intValue(); }catch(Exception e){ jTextField5.setText(""); jTextArea1.append("Must be a number value. \n"); return; } int from,to; try{ from = Integer.valueOf(jTextField1.getText()).intValue(); }catch(Exception e){ jTextField1.setText(""); jTextArea1.append("Must be a number value. \n"); return; } try{ to = Integer.valueOf(jTextField2.getText()).intValue(); }catch(Exception e){ jTextField2.setText(""); jTextArea1.append("Must be a number value. \n"); return; } if (from >= to){ jTextField2.setText(""); return; } if (to >= limit){ HUtil.HDialog.HYNDialog yndialog = new HUtil.HDialog.HYNDialog(this, true); yndialog.setTitle("Continue ?"); yndialog.setMsgText("Warning: \n'" + to + "' is so large, the calculation maybe \ntake uncanny long time. "); yndialog.show(); if (!yndialog.getResult()){ return; } } if (rand){ //random boolean b = false; for (int i=0;i<this.maximum;i++){ p = rand(from,to); if(isPrime(p)){ break; } } //jTextArea1.append("p = " + p + " \n"); for (int i=0;i<this.maximum;i++){ q = rand(from,to); if((p!=q)&&(isPrime(q))){ b = true; break; } } //jTextArea1.append("q = " + q + " \n"); if (!b){ jTextArea1.append("Could not find p and q in [ 0 - " + this.maximum + " ]\n"); return; } }else{ //not random if (this.isPrime(from)){ p = from; }else{ jTextField1.setText(""); jTextArea1.append("Must be a prime number. \n"); return; } if (this.isPrime(to)){ q = to;; }else{ jTextField2.setText(""); jTextArea1.append("Must be a prime number. \n"); return; } } modulus = p*q; //get modulus this.jTextField3.setText(modulus+""); //get public key //ArrayList arrPublicKey = new ArrayList(); int[] pf = getPrimeFactor((p-1)*(q-1)); for (int i=3;i<modulus;i++){ if (!hasCommonPrimeFactor(i, pf)){ //arrPublicKey.add(new Integer(i)); this.jComboBox1.addItem(i+""); } } //if (jComboBox1.countComponents()>0){ // jComboBox1.setEditable(true); //} }//GEN-LAST:event_jButton1ActionPerformed public boolean isPrivateKey(int p, int q, int publickey, int privatekey){ if ((publickey*privatekey)%((p-1)*(q-1))==1){ return true; }else{ return false; } } public boolean hasCommonPrimeFactor(int in, int[] primeFactor){ boolean result = false; for(int i=0;i<primeFactor.length;i++){ if (in%primeFactor[i]==0){ result = true; } } return result; } public int[] getPrimeFactor(int in){ int[] temp = new int[in]; int[] result; int cnt = -1; for (int i=2;i<in;i++){ if (isPrime(i)||(i==2)){ if (in%i==0){ cnt ++; temp[cnt] = i; } } } result = new int[cnt+1]; for(int i=0;i<=cnt;i++){ result[i] = temp[i]; } return result; } public boolean isPrime(int in){ boolean result = true; for (int i=2;i<in;i++){ if (in%i == 0){ result = false; break; } } return result; } public int rand(int from, int to){ int result; result = from + (int)(Math.random() * (Math.abs(to - from))); return result; } /** Exit the Application */ private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm System.exit(0); }//GEN-LAST:event_exitForm /** * @param args the command line arguments */ public static void main(String args[]) { new HRasKeyGenerator().show(); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel jLabel4; private javax.swing.JButton jButton2; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JPanel jPanel4; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel3; private javax.swing.JTextField jTextField3; private javax.swing.JLabel jLabe6; private javax.swing.JPanel jPanel3; private javax.swing.JLabel jLabel2; private javax.swing.JButton jButton1; private javax.swing.JPanel jPanel2; private javax.swing.JButton jButton3; private javax.swing.JPanel jPanel5; private javax.swing.JTextField jTextField5; private javax.swing.JTextArea jTextArea1; private javax.swing.JPanel jPanel7; private javax.swing.JPanel jPanel1; private javax.swing.JTextField jTextField2; private javax.swing.JPanel jPanel6; private javax.swing.JComboBox jComboBox1; private javax.swing.JTextField jTextField1; private javax.swing.JCheckBox jCheckBox1; private javax.swing.JTextField jTextField4; private javax.swing.JLabel jLabel5; // End of variables declaration//GEN-END:variables }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -