Как ввести строку для шифрования с использованием arc4?

Я использовал библиотеку Crypto ++ для шифрования arc4. Ссылка отсюда, но не полностью объяснено: http://www.cryptopp.com/wiki/Stream_Cipher.

Вот мой код:

string key = "key";
string msg = "hello";

ARC4 arc4((byte*)key.c_str(), sizeof((byte*)key.c_str()));

arc4.ProcessData((byte*)msg.c_str(), (byte*)msg.c_str(), sizeof((byte*)msg.c_str()));
arc4.ProcessData((byte*)msg.c_str(), (byte*)msg.c_str(), sizeof((byte*)msg.c_str()));

cout << msg << endl;

Мое сообщение после шифрования и дешифрования, что полностью мусор, то я не мог прочитать.
не расшифровывается обратно в «привет» короче.

Итак, как я могу зашифровать и расшифровать сообщение с ключом, как указано выше?

2

Решение

Две проблемы. Во-первых, вам нужно использовать строку size(), и не sizeof(), Во-вторых, вам нужно сбросить arc4 объект при расшифровке. В противном случае состояние шифра продолжается с предыдущего шифрования.

string key = "key";
string msg = "hello";

ARC4 arc4((byte*)key.data(), key.size());
arc4.ProcessData((byte*)msg.data(), (byte*)msg.data(), msg.size());

// Reset state
arc4.SetKey((byte*)key.data(), key.size());
arc4.ProcessData((byte*)msg.data(), (byte*)msg.data(), msg.size());

cout << msg << endl;
1

Другие решения


По вопросам рекламы [email protected]