使用函数c ++的Encrpyt / Decrpyt程序

时间:2016-11-16 04:48:50

标签: c++ xor

你好这里的业余爱好者,过去两个月一直在学习c ++。我对函数的理解并不那么尖锐,对于c ++中的一些运算符(如xor)更是如此。我正在编写一个程序,它将从用户那里获取一个字符串,使用^运算符对其进行加密,然后对其进行解密。我认为我有基本的基础,但我得到一些奇怪的输出,我认为它与我的for循环,或者也许我使用XOR有关。我的计划如下,任何帮助都将非常感谢。

#include <iostream>
#include <string>
#include <cmath>
using namespace std;

const short SIZE = 132;
class deer
{

public:
char inputdata();
char encryptdata(char inputbuffer[SIZE], char encryptbuffer[SIZE]);
char inputbuffer[SIZE];
char encryptbuffer[SIZE];
char decryptbuffer[SIZE];
char decrpytdata(char n[], char p[]);
long e;
long count;


};

int main()
{
deer obj;
obj.inputdata();
obj.encryptdata(obj.inputbuffer, obj.encryptbuffer);
obj.decrpytdata(obj.encryptbuffer, obj.decryptbuffer);

system("pause");
return 0;
}

char deer::inputdata()
{
cout << "please enter your text to be encrpyted" << endl;
cin.getline(inputbuffer, SIZE);
cin.gcount();
count =cin.gcount();
count--;
cout << inputbuffer << endl;
return 0;


}

char deer::encryptdata(char inputbuffer[], char encryptbuffer[])
{
short key = 0xAC;
int i = 0;
for (int i = 0; i <= count; i++) {

    inputbuffer[i] = encryptbuffer[i] ^= key;
    cout << encryptbuffer << endl;

}
return *encryptbuffer;


}

char deer::decrpytdata(char encryptbuffer[], char decryptbuffer[])
{
int i = 0;
for (int i = 0; i <= count; i++) {

    encryptbuffer[i] ^= decryptbuffer[i];

}
cout << decryptbuffer << endl;

return decryptbuffer;
}

1 个答案:

答案 0 :(得分:0)

使用XOR的加密和解密需要相同的密钥(代码中的0xAC表示)。 encryptbuffer是通过使用密钥对inputbuffer进行异或而生成的,decryptbuffer是通过使用密钥对encryptbuffer进行异或来生成的。因此,密钥需要是deer

的成员

由于inputbufferencryptbufferdecryptbuffer是类鹿的成员,因此在调用成员函数enctyptdata和{{}时不需要将它们作为参数放置。 1}}。

加密功能:

decryptdata

解密功能:

char deer::encryptdata()
{
    for (int i=0; i&lt;count; ++i)
    {
        encryptbuffer[i] = inputbuffer[i] ^ key;
    }
    cout &lt;&lt; encryptbuffer &lt;&lt; endl;
}

鹿类:

char deer::decryptdata()
{
    for (int i=0; i&lt;count; ++i)
    {
        decryptbuffer[i] = encryptbuffer[i] ^ key;
    }
    cout &lt;&lt; decryptbuffer &lt;&lt; endl;
}