Я пытаюсь расшифровать .bin-файл, который я не знаю, ключ для ответа на этот вопрос, который мы задавали в классе: 8) Предположим, вы не знали, значение «ключа», которое вы использовали в 6). Вы еще можете расшифровать зашифрованный файл? Если так, напишите программу, которая сделает это. (нет знаков, этот просто для удовольствия!) ProofГде я ошибаюсь в своем дешифровании
int main(int argc, char* argv[]) {
uint8_t c, key = 0, uintOutput = 0;
string Encrypted, everything[255];
char b, charOutput;
int x = 0;
while ((b = getchar()) != EOF) {
Encrypted = Encrypted + b; //read in chars from file and add them to a string (still encrypted)
}
Я попробовал несколько методов, и я действительно думал, что это один будет работать.
for (int i = 0; i < Encrypted.length(); i++) //for the length of the encrypted string
{
x = 0; //resets the string it is entering into; Array position 0
for (key = 0; key < 255; key++) //key used must be a lowercase letter
{
c = (uint8_t)Encrypted[x]; //convert char 'x' of encrypted string to a byte
uintOutput = (c^key); //XOR with current key guess
charOutput = (char)uintOutput; //convert byte back to char again
everything[x] = everything[x] + charOutput; //add xor'd char to currently selected string
x++; //move to next array position; to next string
}
}
Где все это массив строк - все [255], ключ байт, представляющий ключ шифрования/дешифрования.
for (int y = 0; y < (255* Encrypted.length()); y++) //print out for number of possibilities
{
cout << everything[y] << endl << endl;
}
return 0;
} Для запуска программы я использую .bat-файл с перенаправлением файла в моем случае файл летучего содержит следующее: program.exe <EncryptedText.bin>> ciphertext.bin
Где EncryptedText.bin это файл, который был зашифрован с неизвестным ключом и ciphertext.bin - это то, где выводится дешифрованный текст.
Программа строит отлично, перенаправление файлов в порядке, поскольку я использовал ее с другой программой, которая угадывала ключ, который был только одним символом, а не неограниченной длиной.
Основной вопрос, который я имею сообщение об ошибке, которое появляется при запуске файла .bat Failed
Debug Assertion!
Программа: C: WINDOWS \ SYSTEM32 \ MSVCP140D.ddl
файл я: \ Microsoft Visual Studio \ VC \ включить \ xstring
Line: 1681
Выражение: строка индекс вне диапазона
... (повторить и т.д. здесь)
Я бы очень признателен за любую понимание этого, Я просто не могу видеть, где я пошло не так, и я был возиться с этим вопросом в течение нескольких часов
Это известно как шифр Vigenère. Есть много ссылок на то, как криптоанализировать его. –