【发布时间】:2021-09-29 07:40:13
【问题描述】:
这是一个更新的问题,其中包含正确的代码和几个示例,以便你们了解发生了什么。我很难尝试使工作成为加密程序。我只能使用字符,不能使用任何意义上的字符串。
我正在尝试使用 XOR 运算符对用户在程序中输入的任何消息进行加密,正如您在我的代码中看到的那样。完整代码如下:
include <stdio.h>
#include <iostream>
using namespace std;
void encrypt_stand_message();
int y = 0;
int x = 0;
int option= 0;
char cipher = ' ';
char message[300];
char key[] ="ALCtALC sixth headed civic outlying mayflower irregular boneless prevail freebase delirious projector dreamless";
main ()
{
cout<<"Plese choose option?"<<"\n\n";
cout<<"1. Cipher text\n\n";
cout<<"\n";
cin>>option;
switch(option){
case 1:
encrypt_stand_message();
exit(1);
}
}
void encrypt_stand_message(){
system("clear");
cout <<"Please enter the code to encrypt?"<< "\n\n";
cin.ignore();
cin.get (message, 500);
char a = message[x];
char b = key[y];
while(a!='\0'){
cipher = a ^ b;
cout << cipher;
x+=1;
y+=1;
a = message[x];
if(key[y]=='\0'){
y=0;
}
b = key[y];
}
}
我得到的结果如下截图:
正如你们所看到的,程序并没有加密用户提供的整个文本!我不知道发生了什么,但我正在疯狂地试图解决这个程序并使这个程序正常工作。非常感谢您的帮助。
【问题讨论】:
-
如果曾经有一个程序可以在调试器中单步执行,就是这样。
-
"这是一个更新的问题" - 这是您的previous question 的延续吗?如果是这样,为什么将其作为一个新问题发布,而不是作为对上一个问题的编辑?
-
附注:
cin.ignore();应该在cin>>option;之后,而不是在encrypt_stand_message()内部。 -
这应该是对您上一个问题的修改,而不是一个全新的问题。请删除其中一个,并查看站点指南以了解将来执行此操作的正确方法。此外,consolte 输出是文本,可以直接复制并粘贴到您的帖子中。这些图像完全没有必要。仅当没有它们就无法证明问题时才应使用图像。
-
请注意:300 与 500 不同。
标签: c++ encryption key xor