2014-03-31 105 views
-1

嗨我正在開發一個認證程序,用戶輸入他們的名字,這個名字被編碼(加密)並與授權密碼列表進行比較。如果名字被接受,用戶可以繼續,否則用戶有2次進一步的嘗試。你的程序將容納4個指定用戶,'硬編碼'到程序中。密碼加密程序

該名稱是通過將字母的字母移動11個位置來編碼的,所以'a'變成'i','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

**爲什麼**你問一遍又一遍的問題,頻率爲1小時?在發佈之前,請到[SO幫助中心](http://stackoverflow.com/help)閱讀網站的政策! –

+0

@πάνταῥεῖ實際上問題是提出不同的事情,雖然它們與同一個程序有關。 –

+0

至少,請學習如何正確地發佈代碼*,並正確縮進*! – crashmstr

回答

0
  • 提示1:它不是很難得到字母表中的一個字母的數量:char c; int number = c -'a';
  • 提示2:您可以使用%實現循環移位:int shifted_number = (number + 11) % 26;
  • 提示3:char new_char = number + 'a';
  • 提示4:您可以從許多獲得字符,您可能需要,如果他們來處理大寫字母太被允許。