暗号化、復号アルゴリズムの置き換え
10888 ワード
暗号解読アルゴリズムの代替案の起源はシーザー時代にさかのぼり、シーザーは情報の信頼性を保障するためにシーザー暗号を発明したという.シーザーパスワードは簡単な置換パスワードであり、暗号化時にアルファベット表の各アルファベットはその後の3番目のアルファベットで表され、例えばaはdで表され、bはeで表される.......復号化には,逆プロシージャを実行するだけでよい.
1.暗号化・復号アルゴリズムの置き換え
この歴史の発展に伴い、代替暗号アルゴリズム案はすでに多くの形式を持っており、主に以下のいくつかがある.単表代替暗号アルゴリズムスキーム 同音代替暗号アルゴリズムスキーム マルチテーブル代替暗号アルゴリズムスキーム マルチアルファベットグループ代替暗号アルゴリズムスキーム 以下では,暗号アルゴリズムの代わりに単一テーブルを用いるスキームを例に紹介する.
1)暗号化アルゴリズムの置き換え
暗号化アルゴリズムを置換する基本的な方法は、まず、明文の各文字に対応するASCIIコードがnを後方に移動して対応する暗号文を得る鍵nを与えることである.
この考え方に従って、対応する暗号化アルゴリズムを作成します.コードの例は次のとおりです.
2)置換復号アルゴリズム
復号アルゴリズムを置換する基本的な方法は、暗号化時の鍵と一致しなければならない鍵nを最初に与え、対応する暗号文の各文字のASCIIコードがnを前方に移動して対応する明文を得ることである.
この考え方に従って、対応する暗号化アルゴリズムを作成します.コードの例は次のとおりです.
2.暗号化・復号アルゴリズムの例を置換する
完全なプログラムコードの例は次のとおりです.
プログラムの実行結果は次のとおりです.
1.暗号化・復号アルゴリズムの置き換え
この歴史の発展に伴い、代替暗号アルゴリズム案はすでに多くの形式を持っており、主に以下のいくつかがある.
1)暗号化アルゴリズムの置き換え
暗号化アルゴリズムを置換する基本的な方法は、まず、明文の各文字に対応するASCIIコードがnを後方に移動して対応する暗号文を得る鍵nを与えることである.
この考え方に従って、対応する暗号化アルゴリズムを作成します.コードの例は次のとおりです.
/**
*
* @param str
* @param n ASCII ,
* @return
*/
static char[] jiami(char[] str,int n){
int i,len;
char[] miwen;
len=str.length;
miwen=new char[len]; //
for(i=0;i<len;i++){
miwen[i]=(char)(str[i]+n);
}
return miwen;
}
2)置換復号アルゴリズム
復号アルゴリズムを置換する基本的な方法は、暗号化時の鍵と一致しなければならない鍵nを最初に与え、対応する暗号文の各文字のASCIIコードがnを前方に移動して対応する明文を得ることである.
この考え方に従って、対応する暗号化アルゴリズムを作成します.コードの例は次のとおりです.
/**
*
* @param miwen
* @param n ASCII ,
* @return
*/
static char[] jiemi(char[] miwen,int n){
int i,len;
char[] str;
len=miwen.length;
str=new char[len]; //
for(i=0;i<len;i++){
str[i]=(char)(miwen[i]-n);
}
return str;
}
2.暗号化・復号アルゴリズムの例を置換する
完全なプログラムコードの例は次のとおりです.
package com.cn.mimaxue;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
//
public class THJMJM {
/**
*
* @param str
* @param n ASCII ,
* @return
*/
static char[] jiami(char[] str,int n){
int i,len;
char[] miwen;
len=str.length;
miwen=new char[len]; //
for(i=0;i<len;i++){
miwen[i]=(char)(str[i]+n);
}
return miwen;
}
/**
*
* @param miwen
* @param n ASCII ,
* @return
*/
static char[] jiemi(char[] miwen,int n){
int i,len;
char[] str;
len=miwen.length;
str=new char[len]; //
for(i=0;i<len;i++){
str[i]=(char)(miwen[i]-n);
}
return str;
}
public static void main(String[] args) throws IOException {
char[] str,miwen,jiemi;
int n,i;
String go;
System.out.println(" !");
Scanner input = new Scanner(System.in);
do{
System.out.print(" :");
n = input.nextInt();
System.out.print(" :");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String strtemp=br.readLine();
str=strtemp.toCharArray();
System.out.print(" :");
for(i=0;i<str.length;i++){
System.out.print(str[i]);
}
System.out.println();
miwen=jiami(str,n);
System.out.print(" :");
for(i=0;i<miwen.length;i++){
System.out.print(miwen[i]);
}
System.out.println();
jiemi=jiemi(miwen,n);
System.out.print(" :");
for(i=0;i<jiemi.length;i++){
System.out.print(jiemi[i]);
}
System.out.println();
System.out.print(" (y/n):");
go = input.next();
}while(go.equalsIgnoreCase("y"));
System.out.println(" !");
}
}
プログラムの実行結果は次のとおりです.
!
:4
:Hello everyone!
:Hello everyone!
:Lipps$iziv}sri%
:Hello everyone!
(y/n):y
:3
:One world, One dream!
:One world, One dream!
:Rqh#zruog/#Rqh#guhdp$
:One world, One dream!
(y/n):n
!