Бесплатный урок с нашим репетитором!

Узнать подробнее

Новая Школа - онлайн-школа подготовки к ЕГЭ
При поддержке
Посмотреть все вопросы нейросети
Бесплатный пробный урок с репетитором

Узнай больше про репетиторов Новой Школы и запишись на бесплатный пробный урок. Мы проверим твой уровень знаний и составим план обучения по любому предмету и классу

Вопрос от Анонимного юзера 29 октября 2025 09:17

Напиши программу, которая шифрует введённый пользователем PIN-код.

Ответ нейросети

29 октября 2025 09:17

Вот подробное решение задачи: написать программу, которая шифрует введённый пользователем PIN-код. Это учебная заготовка: используем простую обратимую схему шифрования, подходящую для школьного уровня (не для реальной защиты).

Как работает алгоритм (пошагово)

  • Вводим PIN-код как строку из цифр. Проверяем, что в строке только цифры.
  • Берём произвольный ключ k (0–9). По умолчанию можно взять 4.
  • Шаг 1: для каждой цифры d PIN прибавляем ключ и берём остаток от деления на 10: e = (d + k) mod 10.
  • Шаг 2: полученные цифры соединяем в строку и разворачиваем её в обратном порядке. Это и будет зашифованный PIN.
  • Расшифровка обратно выполняет те же шаги в обратном порядке:
    • разворачиваем зашифрованную строку обратно, вычитаем ключ: d = (e - k) mod 10.
    • получаем исходный PIN.

Пример

  • PIN: 1234, ключ: 3
    • Шаг 1: (1+3)%10=4, (2+3)%10=5, (3+3)%10=6, (4+3)%10=7 → 4567
    • Разворот: 7654 — зашифрованный PIN
  • Расшифровка обратно вернёт 1234.

Код на Python (самодостаточная программа)

  • Программа запрашивает PIN и необязательный ключ, выводит зашифрованный PIN и для проверки расшифрованный исходник.

def encrypt_pin(pin: str, key: int = 4) -> str: # Проверка: PIN должен состоять только из цифр if not isinstance(pin, str) or not pin.isdigit(): raise ValueError("PIN должен состоять только из цифр (0-9).") k = int(key) % 10 # ключ в диапазоне 0..9 # Шаг 1: цифры сдвигаем на k по модулю 10 transformed = [(int(ch) + k) % 10 for ch in pin] # Шаг 2: конкатенируем и разворачиваем return ''.join(str(d) for d in transformed)[::-1]

def decrypt_pin(cipher: str, key: int = 4) -> str: if not isinstance(cipher, str) or not cipher.isdigit(): raise ValueError("Зашифованный PIN должен состоять только из цифр (0-9).") k = int(key) % 10 # Разворачиваем обратно reversed_str = cipher[::-1] original = [(int(ch) - k) % 10 for ch in reversed_str] return ''.join(str(d) for d in original)

def main(): pin = input("Введите PIN-код (только цифры): ").strip() key_input = input("Введите ключ для шифрования (0-9). По умолчанию 4: ").strip() key = int(key_input) if key_input.isdigit() else 4 key = max(0, min(9, key))

try:
    cipher = encrypt_pin(pin, key)
    print("Зашифрованный PIN:", cipher)

    # Проверка расшифровки (опционально)
    restored = decrypt_pin(cipher, key)
    print("Расшифрованный PIN (проверка):", restored)
except ValueError as e:
    print("Ошибка:", e)

if name == "main": main()

Замечания и варианты

  • Это учебная toy-схема шифрования. Для настоящей защиты PIN-данных используйте проверенные криптографические библиотеки и протоколы.
  • Можно легко расширить схему: использовать другой порядок перестановки, иной способ преобразования цифр, или использовать строку-ключ и хеширование — но такие варианты требуют более детального объяснения по криптографии.

Если хочешь, могу адаптировать код под конкретный язык (Java, C++, JavaScript) или под конкретный формат ввода/вывода.

Задай свой вопрос

Напиши любую задачу или вопрос, а нейросеть её решит

Похожие вопросы 15

Бесплатно Мобильное приложение ГДЗ
Мобильное приложение ГДЗ

Задавай вопросы искуcственному интеллекту текстом или фотографиями в приложении на iPhone или Android

qr-codegoogle-playapp-store

Саша — ассистент в телеграмме

Напиши программу, которая шифрует введённый пользователем PIN-код.
Вот подробное решение задачи: написать программу, которая шифрует введённый пользователем PIN-код. Это учебная заготовка: используем простую обратимую схему шифрования, подходящую для школьного уровня (не для реальной защиты). Как работает алгоритм (пошагово) - Вводим PIN-код как строку из цифр. Проверяем, что в строке только цифры. - Берём произвольный ключ k (0–9). По умолчанию можно взять 4. - Шаг 1: для каждой цифры d PIN прибавляем ключ и берём остаток от деления на 10: e = (d + k) mod 10. - Шаг 2: полученные цифры соединяем в строку и разворачиваем её в обратном порядке. Это и будет зашифованный PIN. - Расшифровка обратно выполняет те же шаги в обратном порядке: - разворачиваем зашифрованную строку обратно, вычитаем ключ: d = (e - k) mod 10. - получаем исходный PIN. Пример - PIN: 1234, ключ: 3 - Шаг 1: (1+3)%10=4, (2+3)%10=5, (3+3)%10=6, (4+3)%10=7 → 4567 - Разворот: 7654 — зашифрованный PIN - Расшифровка обратно вернёт 1234. Код на Python (самодостаточная программа) - Программа запрашивает PIN и необязательный ключ, выводит зашифрованный PIN и для проверки расшифрованный исходник. def encrypt_pin(pin: str, key: int = 4) -> str: # Проверка: PIN должен состоять только из цифр if not isinstance(pin, str) or not pin.isdigit(): raise ValueError("PIN должен состоять только из цифр (0-9).") k = int(key) % 10 # ключ в диапазоне 0..9 # Шаг 1: цифры сдвигаем на k по модулю 10 transformed = [(int(ch) + k) % 10 for ch in pin] # Шаг 2: конкатенируем и разворачиваем return ''.join(str(d) for d in transformed)[::-1] def decrypt_pin(cipher: str, key: int = 4) -> str: if not isinstance(cipher, str) or not cipher.isdigit(): raise ValueError("Зашифованный PIN должен состоять только из цифр (0-9).") k = int(key) % 10 # Разворачиваем обратно reversed_str = cipher[::-1] original = [(int(ch) - k) % 10 for ch in reversed_str] return ''.join(str(d) for d in original) def main(): pin = input("Введите PIN-код (только цифры): ").strip() key_input = input("Введите ключ для шифрования (0-9). По умолчанию 4: ").strip() key = int(key_input) if key_input.isdigit() else 4 key = max(0, min(9, key)) try: cipher = encrypt_pin(pin, key) print("Зашифрованный PIN:", cipher) # Проверка расшифровки (опционально) restored = decrypt_pin(cipher, key) print("Расшифрованный PIN (проверка):", restored) except ValueError as e: print("Ошибка:", e) if __name__ == "__main__": main() Замечания и варианты - Это учебная toy-схема шифрования. Для настоящей защиты PIN-данных используйте проверенные криптографические библиотеки и протоколы. - Можно легко расширить схему: использовать другой порядок перестановки, иной способ преобразования цифр, или использовать строку-ключ и хеширование — но такие варианты требуют более детального объяснения по криптографии. Если хочешь, могу адаптировать код под конкретный язык (Java, C++, JavaScript) или под конкретный формат ввода/вывода.