这是从Keyshanc加密算法中取出的。 https://github.com/Networc/keyshanc
我的问题是:如何使用从密码数组中选择的密钥来使用多种加密输出来操作这种主要方法?
我无法在最后突破编码循环。
int main()
{
string password[] = {"JaneAusten", "MarkTwain", "CharlesDickens", "ArthurConanDoyle"};
for(int i=0;i<4;++i)
{
char keys[95];
keyshanc(keys, password[i]);
char inputChar, trueChar=NULL;
cout << "Enter characters to test the encoding; enter # to quit:\n";
cin>>inputChar;
for (int x=0; x < 95; ++x)
{
if (keys[x] == inputChar)
{
trueChar = char(x+32);
break;
}
}
while (inputChar != '#')
{
cout<<trueChar;
cin>>inputChar;
for (int x=0; x < 95; ++x)
{
if (keys[x] == inputChar)
{
trueChar = char(x+32);
break;
}
}
}
}
return 0;
}
答案 0 :(得分:0)
您正在两个地方进行输入,因此您必须进行两次测试。
当您处于while
循环中时,您必须跳出while
循环,并且还要突破for(;;)
循环。您可以设置i=5;
以强制for(;;)
循环停止。
for (int i = 0; i<4; ++i)
{
char inputChar, trueChar = 0;
cout << "Enter characters to test the encoding; enter # to quit:\n";
cin >> inputChar;
if (inputChar == '#') //<== ADD THIS
break;
while (inputChar != '#')
{
cout << trueChar;
cin >> inputChar;
if (inputChar == '#') //<== ADD THIS to break out of for(;;) loop
{
i = 5;
}
}
}
此外,trueChar
和inputChar
应该初始化为0
而不是NULL
(尽管这与此相同)。如果未初始化,请不要打印trueChar
。
if (trueChar)
cout << trueChar;