我已经实施了数据加密标准(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
}
这很好用。但是,如何更改上面的代码,以便用户可以输入要在round函数中使用的按位运算符。我尝试使用Scanner
,但我不知道用于将用户输入存储为按位运算符的数据类型,以便可以在行使用
dataRightTemp[i]=key[i] & dataRight[i];
有人能解释我怎么做吗?
答案 0 :(得分:2)
您无法存储操作员本身。
而是让用户输入操作符作为文本:例如def pingNetwork():
startingIP = raw_input("Enter starting IP address: ")
response = os.system("ping -c 1 " + startingIP)
for ip in range(1, 100):
if response == 0:
with open('IP_LOG_TIMESTAMP.txt', 'w') as f:
f.write(startingIP + ' is up!')
else:
with open('IP_LOG_TIMESTAMP.txt', 'w') as f:
f.write(startingIP + ' is down!')
,and
,..
并在您的代码中使用if语句根据此用户文本使用正确的运算符。伪代码:
or