Функция для расшифровки - PullRequest
1 голос
/ 28 марта 2020

Мне нужна помощь с функцией 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;
}



Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...