存储用户输入的按位运算符的数据类型是什么

时间:2016-06-12 11:57:33

标签: java java.util.scanner bitwise-operators des

我已经实施了数据加密标准(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];

有人能解释我怎么做吗?

1 个答案:

答案 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