プレーンテキストを暗号化して暗号を得るためにデータ暗号化標準(DES)を実装しました。 DESは、単純なコードから開始するには、56ビットのキー、64ビットのブロックサイズ、および16ラウンドを使用しますが、私は4ビットのキー、8ビットのブロックサイズ、4ラウンドを使用し、サブキー生成なしで(つまり、すべてのラウンドで同じキーが使用されます)各ラウンドごとにDESに従って、ラウンド関数が使用される。私の場合、ビット単位のAND(&
)演算子を使用しました。ここでユーザーが入力したビット単位の演算子を格納するデータ型は何ですか
は、これが正常に動作します私のコードの一部
import java.util.Arrays;
public class Encrypt {
private int key[]={1,0,1,0};
private int dataBlock[]={1,1,1,0,1,0,1,1};
private int dataLeft[]=new int [4]; // for left part the plain text
private int dataRight[]=new int [4]; //for right part of the plain text
private int dataLeftTemp[];
private int dataRightTemp[]=new int [4];
private int i=2; // as initially two steps are run through automatically
private int n=5; // the no of rounds
private int cipher[];
public void splitting(){
int j=0; // for setting the indexes of the dataRight[]
for(int i=0;i<dataBlock.length;i++){
if (i<(dataBlock.length/2)){
dataLeft[i]=dataBlock[i];
}
// when i is greater than the half the index of the plain text
else{
dataRight[j]=dataBlock[i];
j++;
}
}
// for printing the array-------------------------------------------------
System.out.println("DataSet");
for(int i: dataLeft){
System.out.print(i);
}
for(int i: dataRight){
System.out.print(i);
}
System.out.println(" ");
System.out.println(" ");
//------------------------------------------------------------------------
}
//==============================round function================================================
public void roundingStart(){
System.out.println("Enter the round function");
for(int i=0;i<4;i++){
// AND function
dataRightTemp[i]=key[i] & dataRight[i];
// XOR function
dataRightTemp[i]=dataRightTemp[i]^dataLeft[i];
}
dataLeft=dataRight.clone();
// printResults();
printFirst();
roundingRest(dataLeft,dataRightTemp);
}
//rest of the code
}
です。しかし、ラウンド関数で使用されるビット単位の演算子をユーザーが入力できるように、上記のコードを変更するにはどうすればよいですか。私はScanner
を使用してみましたが、私は誰かがこれを行う方法を私に説明でき、それはライン
dataRightTemp[i]=key[i] & dataRight[i];
で使用することができるようにビット演算子としてユーザー入力を保存するために使用されるデータ・タイプを知らないのですか?
ビット演算子自体を格納することはできませんが、フラグを格納します。たとえば、フラグが1の場合は&を使用し、フラグは2つの使用|、フラグが3の場合は^などなどです。 –