一回の暗号化、暗号解読アルゴリズム

7931 ワード

1.一回の暗号化、暗号解読アルゴリズム
一回の秘密暗号システムの重要な特性は、鍵Kが真のランダムシーケンスであり、鍵は一回だけ使用される.
次の計算機の擬似乱数関数によって生成されるランダムシーケンスを鍵として簡単に一回の密な暗号解読アルゴリズムを示します.コード例は以下の通りです.
    /**
     *       、    
     * @param str   (  )
     * @param key   
     * @return   (  )
     */
    static char[] bitcode(char[] str, char[] key){
        int len,i;
        char[] wen;
        len = str.length;
        wen = new char[len];
        for(i=0;i){
            wen[i]=(char) (str[i]^key[i]);
        }
        return wen;
    }
2.一回の暗号化、暗号解読アルゴリズムの例
完全コードの例は以下の通りです.
package com.cn.mimaxue;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Random;
import java.util.Scanner;

//
public class YiCiYiMi {
    static char[] key;
    /**
     *       、    
     * @param str   (  )
     * @param key   
     * @return   (  )
     */
    static char[] bitcode(char[] str, char[] key){
        int len,i;
        char[] wen;
        len = str.length;
        wen = new char[len];
        for(i=0;i){
            wen[i]=(char) (str[i]^key[i]);
        }
        return wen;
    }
    
    public static void main(String[] args) throws IOException {
        int i,len;
        char[] str,miwen,mingwen;
        String go,strtemp;
        System.out.println("      、      !");
        Scanner input = new Scanner(System.in);
        do{
            System.out.print("     :");
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            strtemp=br.readLine();
            str=strtemp.toCharArray();
            len = str.length;
            System.out.print("   :");
            for(i=0;i){
                System.out.print(str[i]);
            }
            System.out.println();
            key=new char[len];
            Random r = new Random();
            System.out.print("          :");
            for(i=0;i){
                key[i]=(char) (r.nextInt(10)+'0');
                System.out.print(key[i]);
            }
            System.out.println();
            miwen=bitcode(str,key);
            System.out.print("   :");
            for(i=0;i){
                System.out.print(miwen[i]);
            }
            System.out.println();
            mingwen=bitcode(miwen,key);
            System.out.print("   :");
            for(i=0;i){
                System.out.print(mingwen[i]);
            }
            System.out.println();
            System.out.print("    (y/n):");
            go=input.next();
        }while(go.equalsIgnoreCase("y"));
        System.out.println("    !");
    }

}
プログラム運転の結果は以下の通りです.
      、      !
     :The big bang theory s04e01 is open!
   :The big bang theory s04e01 is open!42989583756243065587039895046960089
   :`Z\[\_UTXUGXSZGAC
]    ]EY@UV
   :The big bang theory s04e01 is open!
    (y/n):y
     :Hello, Tom is here!
   :Hello, Tom is here!3116889387166891173
   :{T]ZWgWZ_EQTCR
   :Hello, Tom is here!
    (y/n):n
    !