您好我正在开发一个身份验证程序,用户输入的名称经过编码(加密)并与授权密码列表进行比较。如果接受该名称,则用户可以继续,如果不是,则用户还有2次尝试。您的程序将容纳4名指定用户,“硬编码”到该程序中。
通过将字母表的字母移动11个位置来编码名称,因此' a'成为'我'' b'成为' m'因此,名称“Joe Bloggs”将被编码为“Uzp Mwzrrd”。编码必须包裹,以便在' z'之后的字母。是' a'因此' z'编码为' k'。
下面是我的代码,但我正在努力加密部分。我显然没有要求任何人为我做这件事,但我希望有人可以给我一些关于如何做到这一点的提示。我真的输了。
bool login() {
const string name;
string nameAttempt;
int attempts = 0;
cout << "enter name" << endl;
cin >> nameAttempt;
LogIn Authenticate(name, nameAttempt);
//cout << "nameAttempt: " << Authenticate.getNameAttempt() << endl;
//cout << "name: " << Authenticate.getName() << endl;
if (Authenticate.getName() == Authenticate.getNameAttempt()) {
return true;
}
else
while(Authenticate.getName() != Authenticate.getNameAttempt())
{
if(attempts++ ==2)//.. a loop for two more attempts
{
return false;
}
std::cout<<"Incorrect name. Try again"<< endl;
std::cout<< "" << endl;
std::cout << "Enter Name:"<< endl;
cin >>nameAttempt;
LogIn Authenticate(name, nameAttempt);
}
}
int main()
{
bool login();
bool loggedin = login();
if(loggedin) {
cout << "Password Correct" << endl;
}
if(!loggedin) {
cout << "Incorrect Password" << endl;
cout << "Program will now terminate" << endl;
system("pause");
return 0;
}
cout << "you are now free to enter lift" << endl;
system("pause");
return 0;
}
答案 0 :(得分:0)
char c; int number = c -'a';
。 %
来实现周期转换:int shifted_number = (number + 11) % 26;
char new_char = number + 'a';