Напиши программу, которая шифрует введённый пользователем 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) или под конкретный формат ввода/вывода.
Понравился ответ?
Задай свой вопрос
Напиши любую задачу или вопрос, а нейросеть её решит



