题目:
写一个加密程序,从cin读入需加密字符串,并将编码后的字符序列写到cout。设计并实现加密函数,并由主程序调用。加密方式如下:字符c的加密形式是c^key[i],其中key是一个指定的字符串”ilikecplusplus”。这个程序以循环的方式使用key中的字符,直到读完全部输入。用同一个key重新加密编码后的正文就能得到原来的正文。(^ 是异或运算)
#include<iostream>
#include<string>
using namespace std;
void Encrypt(string input, string key, int index1,int index2); //编码
void Decode(string input, string key,int index1,int index2); //解码
int main()
{
int len1,len2,index1, index2;
string instr, key = "ilikecplusplus"; //设置key
cout<<"Input:";
getline(cin, instr);
cout <<endl<<"Output:";
len1 = instr.length();
len2 = key.length();
for(int i=0;i<len1; i++)
{
index1 = i%len2;
index2 = i; //让index在key的范围内循环
Encrypt(instr,key,index1, index2);
}
cout << endl<<"Decode:";
for (int i=0;i<len1;i++)
{
index1 = i%len2;
index2 = i;
Decode(instr,key,index1, index2);
}
return 0;
}
void Encrypt(string input, string key, int index1, int index2)
{
input[index2] = input[index2]^key[index1];
cout << input[index2];
}
void Decode(string input, string key,int index1, int index2)
{
char out;
input[index2] = input[index2]^key[index1];
out = input[index2]^ key[index1];
cout << out;
}
运行结果: