freeCodeCamp/curriculum/challenges/russian/08-coding-interview-prep/project-euler/problem-59-xor-decryption.r...

3.6 KiB
Raw Blame History

id challengeType title videoUrl localeTitle
5900f3a81000cf542c50feba 5 Problem 59: XOR decryption Проблема 59: Расшифровка XOR

Description

Каждому символу на компьютере присваивается уникальный код, а предпочтительным стандартом является ASCII (Американский стандартный код для обмена информацией). Например, в верхнем регистре A = 65, звездочке (*) = 42 и в нижнем регистре k = 107. Современный метод шифрования состоит в том, чтобы взять текстовый файл, преобразовать байты в ASCII, затем XOR каждый байт с заданным значением, взятый из Секретный ключ. Преимущество функции XOR заключается в том, что с использованием одного и того же ключа шифрования на шифровом тексте восстанавливается обычный текст; например, 65 XOR 42 = 107, затем 107 XOR 42 = 65. Для нерушимого шифрования ключ имеет ту же длину, что и текстовое сообщение, а ключ состоит из случайных байтов. Пользователь будет хранить зашифрованное сообщение и ключ шифрования в разных местах, и без обеих «половинок» невозможно расшифровать сообщение. К сожалению, этот метод непрактичен для большинства пользователей, поэтому модифицированный метод заключается в использовании пароля в качестве ключа. Если пароль короче сообщения, что, скорее всего, ключ повторяется циклически по всему сообщению. Баланс для этого метода использует достаточно длинный ключ пароля для обеспечения безопасности, но достаточно короткий, чтобы быть незабываемым. Ваша задача упрощена, так как ключ шифрования состоит из трех символов нижнего регистра. Используя cipher.txt (щелкните правой кнопкой мыши и «Сохранить ссылку / цель как ...»), файл, содержащий зашифрованные коды ASCII, и знание того, что обычный текст должен содержать общие английские слова, расшифруйте сообщение и найдите сумму Значения ASCII в исходном тексте.

Instructions

Tests

tests:
  - text: <code>euler59()</code> должен вернуть 107359.
    testString: 'assert.strictEqual(euler59(), 107359, "<code>euler59()</code> should return 107359.");'

Challenge Seed

function euler59() {
  // Good luck!
  return true;
}

euler59();

Solution

// solution required