Мне нужна помощь с функцией string decryptedpassword()
, которая является частью программы для расшифровки пароля. Я должен использовать const VOWELS
, чтобы определить наличие гласных и динамически вставлять 0 до и после каждого гласного.
Основная цель программы - создать систему аутентификации, которая должна начинаться с некоторых начальных аргументов, содержащих его или ее учетные данные, проверено программой.
Эти аргументы указаны в командной строке и должны состоять из двух значений: одно для username
, а другое для password
. К счастью, клиент уже указал, что Kalle будет использовать следующие учетные данные:
Username: Kalle
Password: bAnanASplit
Эти аргументы передаются main(..)
, который, в свою очередь, передает их mainArgumentsParser(..)
, функции, предназначенной для процесса Разбор значений. Вы можете изучить, как это сделать, но не можете изменять код, который вы найдете в этих функциях. Анализатор вернет строковое значение, содержащее учетные данные пользователя в форме username,password
или просто «fail
», чтобы сообщить main(..)
, что было предоставлено слишком мало аргументов.
Затем строка учетных данных передается authenticateUser(..)
который должен отделить username
от password
и хранить их в отдельных строках. Как видно из определения функции, уже существует две строковые константы. const string USERNAME = "Kalle"
;
const string PASSWORD = "i0J0u0j0u0J0Zys0r0{";
#include "Prototypes.h"
using std::string;
using std::stringstream;
using std::cout;
using std::endl;
// If argument less than 3 so print fail.
string mainArgumentParser(int argc, char* argv[]) {
if (argc < 3)
return "fail";
std::stringstream ss;
ss << argv[1] << "," << argv[2];
return ss.str();
}
//bool function to separate username and password and validate them.
bool authenticateUser(string value)
{
const string USERNAME = "Kalle";
const string PASSWORD = "i0J0u0j0u0J0Zys0r0{";
bool authPassed = false;
string username = value.substr(0, 5);
size_t pos = value.find(",");
string pass = value.substr(pos + 1);
if (username == USERNAME && decryptPassword(pass) == PASSWORD )
{
authPassed = true;
}
return authPassed;
}
// bool to detremine if the number is even or not.
bool even(int x)
{
return x % 2 == 0;
}
//function to decrypt the paasword and return the result to validate the authentication.
string decryptPassword(string password)
{
const int ROT7 = 7, ROT9 = 9;
const string VOWELS = "AEIOUYaeiouy";
string decryptedpass;
for (size_t i = 0; i < password.length(); i++) {
if (even(i)) {
decryptedpass += password[i] + ROT7;
}
else {
decryptedpass += password[i] + ROT9;
}
decryptedpass += '0';
}
return decryptedpass;
}