for (auto c : decryptedText)
std::cout << c;
std::cout << std::endl;
return 0;
}
Толық түсіндіру:
Кітапханаларды қосу:
#include #include Бұл жолдарға енгізу-шығару және векторлармен жұмыс істеу үшін қажетті C++ тақырып файлдары кіреді RC4 класының анықтамасы:
class RC4 {
private:
std::vector S;
int i, j;
public:
// Кілтті қабылдайтын сынып конструкторы
RC4(const std::vector& key) : i(0), j(0) {
// S массивін инициализациялау
S.resize(256);
for (int i = 0; i < 256; ++i)
S[i] = i;
// I және j индекстерін инициализациялау
int j = 0;
// Негізгі кілт кестесі алгоритмі
for (int i = 0; i < 256; ++i) {
j = (j + S[i] + key[i % key.size()]) % 256;
std::swap(S[i], S[j]);
}
}
// Шифрлау әдісі
std::vector encrypt(const std::vector& input) {
// Шығыс векторын инициализациялау
std::vector output(input.size());
i = j = 0;
// RC4 алгоритмі
for (size_t x = 0; x < input.size(); ++x) {
i = (i + 1) % 256;
j = (j + S[i]) % 256;
std::swap(S[i], S[j]);
int t = (S[i] + S[j]) % 256;
output[x] = input[x] ^ S[t];
}
return output;
}
};
Бұл блокта RC4 шифрын жүзеге асыратын `RC4` класының анықтамасы бар. Оның жеке деректер мүшелері бар: ауыстыру кестесін сақтауға арналған `s` векторы және осы кестені басқаруға арналған екі `i` және `j` индексі. `RC4 ' конструкторы RC4 негізгі кесте алгоритмін қолдана отырып, берілген кілтпен RC4 нысанын инициализациялайды. 'Encrypt' әдісі ашық мәтінді қабылдайды және RC4 алгоритмі арқылы Шифр мәтінін қайтарады.
`Main ' функциясы:
int main() {
// Пайдаланушының кілтті және ашық мәтінді енгізуін сұрауы
std::string keyString, plaintext;
std::cout << "Введите ключ: ";
std::cin >> keyString;
std::vector key(keyString.begin(), keyString.end());
std::cout << "Расшифрованный текст: ";
for (auto c : decryptedText)
std::cout << c;
std::cout << std::endl;
return 0;
}
Бұл блокта бағдарламаға кіру нүктесі болып табылатын main функциясы бар. Ол Пайдаланушыдан кілт пен ашық мәтінді енгізуді сұрайды, содан кейін сол кілтпен RC4 нысанын жасайды және ашық мәтінді шифрлайды. Содан кейін ол ашық мәтінді және тиісті шифр мәтінін он алтылық форматта шығарады. Осыдан кейін ол бірдей кілтпен жаңа RC4 нысанын жасайды және оны шифрлау нәтижесін экранға шығару арқылы алынған Шифр мәтінін декодтау үшін пайдаланады.