/ / Szybkie hashowanie z długością wyjściową jako długością wejściową - python, hash, hash-string

Szybkie mieszanie z długością wyjściową jako długość wejścia - python, hash, string-hashing

Szukam algorytmu mieszającego, który pobierze ciąg znaków 16 znaków i wyświetli inny ciąg znaków 16 znaków. [Które nie mogą zostać przekonwertowane na ciąg oryginalny]

Myślałem o uzyskaniu wyniku MD5 i pokrojeniu pierwszych 16 znaków, ale myślę, że nie jest to właściwy sposób na rozwiązanie problemu, ponieważ traci on pomysł mieszania.

jakieś sugestie? platformą, jeśli ma znaczenie, jest Python.

Odpowiedzi:

0 dla odpowiedzi № 1

W rzeczywistości tracisz pomysł mieszania już wtedy, gdydecydujesz, że rozmiar wejściowy musi odpowiadać rozmiarowi wyjściowemu, ponieważ zgodnie z Wikipedią „Funkcja skrótu to dowolna funkcja, której można użyć do mapowania danych cyfrowych o dowolnym rozmiarze na dane cyfrowe o ustalonym rozmiarze”.

Jeśli budujesz numer karty kredytowejsystem tokenizacji, po prostu utwórz losowy ciąg znaków po sprawdzeniu, że numer nie został już tokenizowany, sprawdź, czy token nie ma kolizji, zapisz oryginalny numer w sposób dozwolony przez standardy PCI (przeczytaj je, https://www.pcisecuritystandards.org/documents/Tokenization_Guidelines_Info_Supplement.pdf) i jesteś dobry, aby iść.

Jeśli nie, posiekana funkcja skrótu, taka jak SHA256 lubMD5 zapewni powtarzalność również poza twoim systemem i ryzyko kolizji (jest to część haszowania), ale to, czy ma to sens, naprawdę zależy od twojego przypadku użycia.