Mam tak wiele tajemnic i nigdzie ich nie trzymam!
Cel jest prosty: napisać program, który pozwala zapisać ciąg znaków i zabezpieczyć go hasłem.
Program przyjmie alias, hasło i (opcjonalnie) sekret jako parametry.
Jeśli program jest wywoływany po raz pierwszy z danym aliasem, zapisze / zapamięta sekret i wyśle wszystko, co chcesz.
Jeśli program zostanie wywołany z aliasem, który był wcześniej używany, to wyśle sekret dla tego aliasu, jeśli hasło jest takie samo jak przy pierwszym uruchomieniu programu z tym aliasem.
Inne przypadki
Jeśli po raz pierwszy zostanie wywołany z pewnym aliasem i nie zostanie podany żaden sekret - nic nie przechowuj.
Jeśli program jest wywoływany z użytym aliasem, a hasło jest niepoprawne - zwróć dowolny błąd lub nic.
Jeśli program zostanie wywołany z aliasem, który został użyty, hasło jest poprawne i dostarczony jest nowy klucz tajny - wypisz stary klucz tajny i zastąp go nowym, aby następnym razem był wyświetlany tylko nowy klucz tajny.
Jeśli program zostanie wywołany z aliasem, który został użyty, hasło jest prawidłowe i nie zostanie podany żaden nowy klucz tajny - wypisz stary klucz tajny i upewnij się, że nie zostanie zastąpiony.
Uwaga: Te tajemnice / hasła nie muszą być bezpiecznie przechowywane
Uwaga: wszelkie dane alfanumeryczne dla haseł aliasów i tajemnic powinny być akceptowane
Obowiązują standardowe zasady, powodzenia!
Odpowiedzi:
JavaScript (ES6),
6050 bajtówZaoszczędź 10 bajtów dzięki @JonasWilms !
Staje się jako wkład albo
(alias,password,secret)
czy(alias,password)
. Zwraca niezdefiniowany przy pierwszym przechowywaniu tajnego klucza lub fałsz, jeśli hasło jest niepoprawne.Wypróbuj 1. przypadek testowy online!
Wypróbuj drugi przypadek testowy online!
W jaki sposób?
Skomentował
źródło
p&&
jest to wymagane. To kolejne 3 bajty.Python 2 ,
9493 bajtyWypróbuj online!
Tym razem dziwny domyślny parametr dict Pythona działa na moją korzyść ...
źródło
Rubin , 64 bajty
Tworzy skrót dla aliasów do pojedynczej pary kluczy
password => secret
. Prawdopodobnie może być bardziej elegancki.Wypróbuj online!
źródło
Wolfram Language (Mathematica) , 34 bajty
Wypróbuj online!
źródło
C # (interaktywny kompilator Visual C #) ,
140138134 bajtów-2 bajty dzięki @Expired Data
Wypróbuj online!
źródło
P
nie musi byćdynamic
terazPython 2 , 77 bajtów
Wypróbuj online!
Podobne do metody Chasa Browna .
źródło