如何在 ubuntu 中运行这个 C++ 代码?

如何在 ubuntu 中运行这个 C++ 代码?

我已经编译了这段代码:https://github.com/vbdaga/Rabbit-Cipher/blob/master/rabbit.cppg++ rabbit.cpp -o Rabbit没有关于如何传递参数的说明。我只看到getline没有帮助...我使用 Ubuntu 22.04.2,如果有帮助的话...有人知道如何继续吗?

答案1

rabbit.cpp文件似乎包含加密库的最小测试程序 - 您可以向其传递参数,但它会忽略它们:

$ g++ -Wunused-parameter -o Rabbit rabbit.cpp 
rabbit.cpp: In function ‘int main(int, const char**)’:
rabbit.cpp:9:14: warning: unused parameter ‘argc’ [-Wunused-parameter]
    9 | int main(int argc, char const *argv[])
      |          ~~~~^~~~
rabbit.cpp:9:32: warning: unused parameter ‘argv’ [-Wunused-parameter]
    9 | int main(int argc, char const *argv[])
      |                    ~~~~~~~~~~~~^~~~~~

相反,它从文件中读取参数input.txt

key:
2115 55464 876543 3213 6456 79 6546 312
IV:
654897 32135
plaintext_size:
300000000

(出色地技术上std::cin它在标准输入流上重新打开后从 读取input.txt)。交付时,它不提供任何输入纯文本的方法 - 它只是plaintextplaintext_size零字节填充向量:

    vector <unsigned int> plaintext;
    int len;
    cin>>len;
    for(int i=0;i<len;i++){
            int x;
            //cin>>x;
            plaintext.push_back(0);
    }

给定plaintext_size300000000,将产生一个极大的密文输出。

如果您想验证程序是否按预期工作,建议您修改文件input.txt中相应的示例README.md

### Example

key1 = [0000 0000 0000 0000 0000 0000 0000 0000]

plain_text = [0000 0000 0000 0000 ]

iv = [0000 0000]

cipher_text = [ED B7 05 67 37 5D CD 7C D8 95 54 F8 5E 27 A7 C6]

IE

$ cat input.txt
key:
0000 0000 0000 0000 0000 0000 0000 0000
IV:
0000 0000
plaintext_size:
4

然后./Rabbit应该产生以下内容output.txt

$ cat output.txt 
01100111000001011011011111101101
01111100110011010101110100110111
11111000010101001001010111011000
11000110101001110010011101011110

您可以确认其中包含预期的密文字节,例如使用

$ perl -ne 'printf "%X\n", unpack("L", pack("B*", $_))' output.txt 
EDB70567
375DCD7C
D89554F8
5E27A7C6

相关内容