⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.java

📁 PlayFair算法的一个很好的实现
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
// TODO 将在此处添加您的处理代码:
       jTextArea1.setText("");
          produceKey();
        for(int i=0;i<5;i++)
        {
            for(int j=0;j<5;j++)
            {
              jTextArea1.append(String.valueOf(key[i][j])+"  ");
            }
            jTextArea1.append("\n");
         }
    }//GEN-LAST:event_showmarix

    private void entry(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_entry
// TODO 将在此处添加您的处理代码:
        produceKey();
        String src=jTextField2.getText();
        if(src.length()<=1)
        {
            jTextField3.setText(src);
            return;
        }
        StringBuffer tem=new StringBuffer(src);
        StringBuffer result=new StringBuffer();
        char a,b;
        int ax=0,ay=0,bx=0,by=0;
        while(tem.length()>=1)
        {
            if(tem.length()==1)
            {
               a=tem.charAt(0);
               tem.deleteCharAt(0);
               result.append(a);
               jTextField3.setText(result.toString());
               return;
            }
            a=tem.charAt(0);
            tem.deleteCharAt(0);
            b=tem.charAt(0);
            if(a=='q')
                a='i';
            if(b=='q')
                b='i';
            if(a==b)
            {
                if(a=='x')
                    b='w';
                else
                    b='x';
                for(int i=0;i<5;i++)
                {
                    for(int j=0;j<5;j++)
                    {
                        if(a==key[i][j])
                        {
                           ax=i;
                           ay=j;
                        }
                    }
                }
                for(int i=0;i<5;i++)
                {
                    for(int j=0;j<5;j++)
                    {
                        if(b==key[i][j])
                        {
                           bx=i;
                           by=j;
                        }
                    }
                }
                 if(ax==bx)//同行
                {
                    ay=(ay+1)%5;
                    by=(by+1)%5;
                    a=key[ax][ay];
                    b=key[bx][by];
                    result.append(a);
                    result.append(b);
                }
                 else
                 {
                    if(ay==by)//同列
                   {
                     ax=(ax+1)%5;
                     bx=(bx+1)%5;
                     a=key[ax][ay];
                     b=key[bx][by];
                     result.append(a);
                     result.append(b);
                    }
                    else
                    {
                       int tax,tay,tbx,tby;
                       tax=ax;
                       tay=by;
                       tbx=bx;
                       tby=ay;
                       a=key[tax][tay];
                       b=key[tbx][tby];
                       result.append(a);
                       result.append(b);
                    }
                 }
                
             }
             else
             {
                 tem.deleteCharAt(0);
                  for(int i=0;i<5;i++)
                {
                    for(int j=0;j<5;j++)
                    {
                        if(a==key[i][j])
                        {
                           ax=i;
                           ay=j;
                        }
                    }
                }
                for(int i=0;i<5;i++)
                {
                    for(int j=0;j<5;j++)
                    {
                        if(b==key[i][j])
                        {
                           bx=i;
                           by=j;
                        }
                    }
                }
                 if(ax==bx)//同行
                {
                    ay=(ay+1)%5;
                    by=(by+1)%5;
                    a=key[ax][ay];
                    b=key[bx][by];
                    result.append(a);
                    result.append(b);
                }
                 else
                 {
                    if(ay==by)//同列
                   {
                     ax=(ax+1)%5;
                     bx=(bx+1)%5;
                     a=key[ax][ay];
                     b=key[bx][by];
                     result.append(a);
                     result.append(b);
                    }
                    else
                    {
                       int tax,tay,tbx,tby;
                       tax=ax;
                       tay=by;
                       tbx=bx;
                       tby=ay;
                       a=key[tax][tay];
                       b=key[tbx][tby];
                       result.append(a);
                       result.append(b);
                    }
                 }
                
             }
        }
        jTextField3.setText(result.toString());
       
    }//GEN-LAST:event_entry
    
    /**
     * @param args the command line arguments
     */
    void produceKey()
    {
        sb=new StringBuffer("abcdefghijklmnoprstuvwxyz");
        keyset.clear();
        keysize=0;
        String s=jTextField1.getText();
        for(int i=0;i<s.length();i++)
        {
            char c=s.charAt(i);
            if(c=='q')
                c='i';
            String tem=String.valueOf(c);
            if(!keyset.contains(tem))
            { 
               keys[keysize]=c; 
               keysize++;
             }
            keyset.add(tem);
            int index=sb.indexOf(tem);
            if(index!=-1)
            {
                sb.deleteCharAt(index);
            }
        }
        for(int i=keysize,j=0;i<=24;i++,j++)
        {
            keys[i]=sb.charAt(j);
        }
         for(int i=0;i<5;i++)
        {
            for(int j=0;j<5;j++)
            {
                key[i][j]=keys[i*5+j];
            }
         }
        
        
    }
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Main().setVisible(true);
            }
        });
    }
    
    // 变量声明 - 不进行修改//GEN-BEGIN:variables
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea jTextArea1;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    // 变量声明结束//GEN-END:variables
    StringBuffer sb=new StringBuffer("abcdefghijklmnoprstuvwxyz");
    char[][] key=new char[5][5];
    char[] keys=new char[25];
    HashSet<String> keyset=new HashSet<String>();
    int keysize=0;//化简后长度
  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -