Как мне сделать функцию дешифрования из функции шифрования в c ++? - PullRequest
0 голосов
/ 04 августа 2020

Итак, у меня есть функция шифрования

std::string encrypt(std::string text, int s)
{
    std::string result = "";

    // traverse text 
    for (int i = 0; i < text.length(); i++)
    {
        // apply transformation to each character 
        // Encrypt Uppercase letters 
        if (isupper(text[i]))
            result += char(int(text[i] + s - 65) % 26 + 65);

        // Encrypt Lowercase letters 
        else
            result += char(int(text[i] + s - 97) % 26 + 97);
    }

    // Return the resulting string 
    return result;
}

, которую можно использовать так:

 std::string ans = "AABBCCDDEEFFGGH"
 std::time_t result = std::time(nullptr);
 DWORD Hours = ((result / 60) / 60) / ans.length();
 std::cout << "Output: " << encrypt(ans, Hours) << std::endl;

Я попытался сделать функцию дешифрования, но с треском провалился, получив результат как:

┐┐ªªºº¿¿⌐⌐¬¬½½¼

Может ли кто-нибудь помочь?

Вы, ребята, просили функцию дешифрования, которую я пытался сделать, вот она:


std::string decrypt(std::string encryptedtext, int s)
{
    std::string result;
    //RZHUPINVGIQZHXW
    for (int i = 0; i < encryptedtext.length(); i++)
    {
        if (isupper(encryptedtext[i]))
            result += char(int((65 - (encryptedtext[i] + 65 - s) % 26) + 65));
        else
            result += char(int((97 - (encryptedtext[i] + 65 - s) % 26) + 97));
    }
    return result;
}

Я немного с ней поигрался , и я получил буквы с кружками наверху

1 Ответ

0 голосов
/ 04 августа 2020

В настоящее время ваш код обрабатывает строчные и небуквенные буквы одинаково:

// Encrypt Uppercase letters 
if (isupper(text[i]))
  result += char(int(text[i] + s - 65) % 26 + 65);

// Encrypt Lowercase letters 
else
  result += char(int(text[i] + s - 97) % 26 + 97);

Ваш else обрабатывает как строчные, так и другие небуквенные символы: =?,&$ et c. Вам нужно что-то еще, например:

// Encrypt Uppercase letters.
if (isupper(text[i])) {
  // Process uppercase letter.
  ### code here ###
}
// Encrypt Lowercase letters.
else if (islower(text[i])) {
  // Process lowercase letter.
  ### code here ###
}
// Handle non-letters.
else {
  // Process non-letter.
  ### code here ###
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...