我已经编译了这段代码:https://github.com/vbdaga/Rabbit-Cipher/blob/master/rabbit.cpp
但g++ 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
)。交付时,它不提供任何输入纯文本的方法 - 它只是plaintext
用plaintext_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_size
300000000,将产生一个极大的密文输出。
如果您想验证程序是否按预期工作,建议您修改文件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