У меня так много секретов и некуда их хранить!
Цель проста: написать программу, которая позволит вам сохранить строку и защитить ее паролем.
Программа примет псевдоним, пароль и (необязательно) секрет в качестве параметров.
Если это первый раз, когда программа вызывается с заданным псевдонимом, она сохранит / запомнит секрет и выведет все, что вы захотите.
Если программа вызывается с псевдонимом, который использовался ранее, она выведет секрет для этого псевдонима, если пароль будет таким же, как в первый раз, когда программа была запущена с этим псевдонимом.
Другие случаи
Если в первый раз вызывается с определенным псевдонимом и секрет не указан - ничего не храните.
Если программа вызывается с использованием псевдонима, который был использован, и пароль неверен - верните любую ошибку или вообще ничего.
Если программа вызывается с использованием псевдонима, который был использован, пароль верен и предоставлен новый секрет - выведите старый секрет и замените его новым, чтобы в следующий раз выводился только новый секрет.
Если программа вызывается с использованным псевдонимом, пароль верен и новый секрет не указывается - выведите старый секрет и убедитесь, что он не заменен.
Примечание: эти секреты / пароли не должны храниться надежно
Также обратите внимание: любой буквенно-цифровой ввод для псевдонимов паролей и секретов должен быть принят
Применяются стандартные правила, удачи!
Ответы:
JavaScript (ES6),
6050 байтСохранено 10 байтов благодаря @JonasWilms !
Принимает ввод либо либо,
(alias,password,secret)
либо(alias,password)
. Возвращает undefined при первом хранении секрета или false, если пароль неверный.Попробуйте первый тестовый пример онлайн!
Попробуйте второй тестовый пример онлайн!
Как?
комментарии
источник
p&&
это требуется. Итак, это еще 3 байта.Python 2 ,
9493 байтаПопробуйте онлайн!
На этот раз странный по умолчанию параметр dict в Python работает в мою пользу ...
источник
Рубин , 64 байта
Создает хэш для псевдонимов для одной пары ключей
password => secret
. Вероятно, может быть более элегантным.Попробуйте онлайн!
источник
Wolfram Language (Mathematica) , 34 байта
Попробуйте онлайн!
источник
C # (интерактивный компилятор Visual C #) ,
140138134 байта-2 байта благодаря @Expired Data
Попробуйте онлайн!
источник
P
не должно бытьdynamic
сейчасPython 2 , 77 байт
Попробуйте онлайн!
Похож на метод Часа Брауна .
источник