Как отмечали другие, «xor» - прекрасный механизм шифрования, поскольку шифрование и дешифрование - это точно такая же операция. Если вы используете каждую часть ключа только один раз, вы можете использовать самый безопасный алгоритм шифрования.
Если вы повторно используете любую часть ключа, он превращается в один из худших механизмов шифрования, потому что это позволяет легко взломать.
Проблема, с которой вы сталкиваетесь, - как вы переходите от символов к значению, которое вы хотите зашифровать. Вы можете взять значения символов Юникода, но вы получите фиктивные результаты с помощью зашифрованного текста и ключа. Проблема с использованием Unicode as-is заключается в том, что после шифрования/дешифрования вы можете получать непечатаемые символы, что обычно не является проблемой, но в примерах учебников трудно печатать непечатаемые символы.
Чтобы расшифровать текст, я сделал предположение, что перевод символов работает так.
A
- Z
=> 0 - 25
a
- z
=> 26 - 51
0
- 9
=> 52 - 61
(мне не нужно угадывать что 62/63 было бы просто пространством и точкой, было бы хорошим догадкой).
Используя это предположение и xor, я беру ваш зашифрованный текст umzDlBF8aFix
и ваш ключ oE2dpffzEiFD
и заканчивая открытым текстом GiFeMeaPenny
.
Поскольку это можно прочитать на английском языке - «Дайте мне пенни» - похоже, что допущения выше правдоподобны.
Подумайте об этом: если «зашифровать» = ключ XST открытого текста, то не будет «дешифровать» = ключ шифрования Ciphertext XOR? – paulsm4
Хмм .. Я не уверен, что орфографическая ошибка - шутка, но я уверен, что открытый текст - «GiFeMeaPenny» - «Дай мне копейку». –
"строки с открытым текстом", что представляют собой строки открытого текста? –