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

📄 playfair.java

📁 playfair算法的java实现
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
 * Playfair.java
 *
 * Created on 2007年11月25日, 下午5:21
 */
import java.util.*;
import java.io.*;
import java.lang.Integer;
/**
 *
 * @author  yy_yy
 */
public class Playfair extends javax.swing.JFrame {
    
    /** Creates new form Playfair */
    public Playfair() {
        //getkey();
        initComponents();
        
    }
    void getkey(){
        String s =jTextField1.getText();
        //System.out.println(s);
        
        for(int i = 0; i < s.length(); i++){
            char ch = s.charAt(i);
            if(ch<'a' || ch>'z' ){
               javax.swing.JOptionPane.showMessageDialog(null,"请输入数据");
            }
        }
        char c[] = s.toCharArray();
        char c1[] = new char[25];
        

        int n = 0;
        for(int i = 0; i<c.length; i++){
            boolean flg = true;
            if(c[i]=='q'){c[i]='i';}
            for(int j = 0; j < i; j++){
                if( c[i] == c[j]){
                    flg = false;
                    continue;           
                }         
            }
            if(flg){
                c1[n] = c[i];
                n++;
            }
        }       
        System.out.println(c1);
        
        char c2[] = new char[25];
        int t=0;
        for(int m='a';m<='z';m++)
         {
            boolean flg1 = true;
            if(m =='q'){ 
                continue;//////////不要字符j//////////////////
            } 
            char r = (char)m;
            //c2[t] = r; 
            //t++;
            //System.out.print(r);
            for(int i = 0; i < c.length; i++){
                if(c[i] == r){
                    flg1 = false;
                    //break;
                }
            }
            if(flg1 == true){
               c1[n] = r; 
               n++;
            }
        }
        //System.out.println(c1);
        //System.out.println(n);
       // Iterator it = h.iterator();
        int z =0;
        for( int i = 0; i <  5; i++){
                //System.out.println();
            for(int j = 0; j < 5; j++){
                    key[i][j] = c1[z];
                    z++;
                }
        }
        char l[] = new char[25];
        int e = 0;
        for( int i = 0; i <  5; i++){    
                for(int j = 0; j < 5; j++){
                    l[e] = key[i][j];
                    e++;
                    System.out.print(key[i][j]);
                    
                    //System.out.print(key[i][j]);
                }
                System.out.println(); 
            }
        jLabel1.setText(new String(l,0,1) );
        jLabel2.setText(new String(l,1,1) );
        jLabel3.setText(new String(l,2,1) );
        jLabel4.setText(new String(l,3,1) );
        jLabel5.setText(new String(l,4,1) );
        jLabel6.setText(new String(l,5,1) );
        jLabel7.setText(new String(l,6,1) );
        jLabel8.setText(new String(l,7,1) );
        jLabel9.setText(new String(l,8,1) );
        jLabel10.setText(new String(l,9,1) );
        jLabel11.setText(new String(l,10,1) );
        jLabel12.setText(new String(l,11,1) );
        jLabel13.setText(new String(l,12,1) );
        jLabel14.setText(new String(l,13,1) );
        jLabel15.setText(new String(l,14,1) );
        jLabel16.setText(new String(l,15,1) );
        jLabel17.setText(new String(l,16,1) );
        jLabel18.setText(new String(l,17,1) );
        jLabel19.setText(new String(l,18,1) );
        jLabel20.setText(new String(l,19,1) );
        jLabel21.setText(new String(l,20,1) );
        jLabel22.setText(new String(l,21,1) );
        jLabel23.setText(new String(l,22,1) );
        jLabel24.setText(new String(l,23,1) );
        jLabel25.setText(new String(l,24,1) );
        
        
         
    }
    
    
    void jiami(){
        //getkey();
        String s =jTextArea1.getText();
        char c[] = new char[100];
        char c1[]= new char[100];
        char c2[]= new char[100];
        int len = 0;
        for(int i = 0; i < s.length(); i++){
            char ch = s.charAt(i);
            if(ch>='a' && ch<='z' ){
                c[len] = ch;
                len++;
            }
        }
        //c = s.toCharArray();
        int flg = 0;
        int nx = 0;
        //int i = 0;
        int size = len;
        System.out.println(size);
        for( int i = 0; i < size; i++){
             c1[i] =  c[i];
        }
        for( int i = 0; i < size/2; i++ ){              //判断明文中的重复元素
            if(flg != 0){     //插过                   
                i = 0;
                flg = 0;
            }
            if(c1[i*2]==c1[i*2+1] ){                  //判断明文中的重复元素
                for(int j = size ;j>=i*2+1;j--){
                    System.out.println(j);
                    c1[j] = c1[j - 1]; 
                }
                    c1[i*2+1] = 'x';
                    nx++;
                    flg=1;
                    ++size;
            }
        }
        if( (size%2)!= 0){       //判断明文总共是奇偶?
            System.out.println(size);
            c1[size] = 'x';
            size=size + 1;
        }
        int r1 = 0, l1 = 0, r2 = 0, l2 = 0;  //r 为行, l为列
        for(int g = 0; g < size/2; g++){
            for(int i = 0; i < 5; i++){
                for(int j = 0; j < 5; j++){
                    if(c1[2*g] == key[i][j]){
                        r1 = i;
                        l1 = j;
                    }
                    if(c1[2*g+1]== key[i][j]){
                        r2 = i;
                        l2 = j;
                    }
                }
            }
            if(r2 == r1){    //同一行
                c2[2*g] = key[r1][ (l1+1) % 5];
                c2[2*g+1]=key[r2][ (l2+1) % 5];
            }
            else if(l1 == l2){   //同一列
                c2[2*g] = key[(r1+1) % 5][l1];
                c2[2*g+1]=key[(r2+1) % 5][l2];
            }
            else{
                c2[2*g] = key[r1][l2];
                c2[2*g+1]=key[r2][l1];
            }
        }
        char jieguo[] = new char[size];
        for(int i = 0; i < size; i++){
            jieguo[i] = c2[i];
        }
        jTextArea2.setText(new String(jieguo));
    }
    
    
    void jiemi(){
        String s =jTextArea2.getText();
        char c[] = new char[100];
        char c1[]= new char[100];    
        c = s.toCharArray();
        System.out.println(c);
        int size = s.length();
        int r1 = 0, l1 = 0, r2 = 0, l2 = 0; 
        for(int n = 0; n < size/2; n++){
            for(int i = 0; i < 5; i++){
                for(int j = 0; j < 5; j++){
                    if(c[2*n] == key[i][j]){
                        r1 = i;
                        l1 = j;                       
                    }
                    if(c[2*n + 1] == key[i][j]){
                        r2 = i;
                        l2 = j;
                    }
                }
            }
            //System.out.println(1)%5);
            if(r1 == r2){
                if(l1 == 0 ){ l1 = 5;}
                c1[2*n] = key[r1][(l1 - 1)%5];
                if(l2 == 0 ){ l2 = 5;}
                c1[2*n  + 1] = key[r2][(l2 - 1)%5];
            }
            else if(l1 == l2){
                if(r1 == 0){ r1 = 5;}
                c1[2*n] = key[(r1 - 1)%5][l1];
                if(r2 == 0){ r2 = 5;}
                c1[2*n + 1] = key[(r2 - 1)%5][l2];
            }
            else{
            c1[2*n] = key[r1][l2];
            c1[2*n + 1] = key[r2][l1];
            }
        }
        char c2[]= new char[size];
        for(int j = 0; j < size; j++ ){
            c2[j] = c1[j];
        }
        
        jTextArea1.setText(new String(c2));
    }

    
    /** This method is called from within the constructor to  fgdebcanolmkhiwvutsrqpzyx

     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">//GEN-BEGIN:initComponents
    private void initComponents() {
        jTextField1 = new javax.swing.JTextField();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextArea1 = new javax.swing.JTextArea();
        jScrollPane2 = new javax.swing.JScrollPane();
        jTextArea2 = new javax.swing.JTextArea();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();
        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        jLabel6 = new javax.swing.JLabel();
        jLabel7 = new javax.swing.JLabel();
        jLabel8 = new javax.swing.JLabel();
        jLabel9 = new javax.swing.JLabel();
        jLabel10 = new javax.swing.JLabel();
        jLabel11 = new javax.swing.JLabel();
        jLabel12 = new javax.swing.JLabel();
        jLabel13 = new javax.swing.JLabel();
        jLabel14 = new javax.swing.JLabel();
        jLabel15 = new javax.swing.JLabel();
        jLabel16 = new javax.swing.JLabel();
        jLabel17 = new javax.swing.JLabel();
        jLabel18 = new javax.swing.JLabel();
        jLabel19 = new javax.swing.JLabel();
        jLabel20 = new javax.swing.JLabel();
        jLabel21 = new javax.swing.JLabel();

⌨️ 快捷键说明

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