Potrzebuję wskazówek lub praktycznego przykładu szyfrowania int do innej int, a tajny klucz będzie wymagany do odszyfrowania wartości.Symetryczna liczba całkowita do szyfrowania całkowitoliczkowego
Coś jak:
encrypt(1, "secret key") == 67123571122
decrypt(67123571122, "secret key") == 1
Ten facet pyta prawie to samo pytanie: Symmetric Bijective Algorithm for Integers
jednak mnie jest całkowite szyfrowanie „n00b” Chciałbym trochę więcej praktycznych przykładów, w Pythonie, jeśli to możliwe.
Rozumiem, że muszę używać jakiegoś szyfru blokowego, ale jestem całkiem stracił na części o utrzymanie zaszyfrowany wynik nadal być numeryczny i dość krótki (może długo zamiast int)
Wszelkie wskaźniki? Dzięki
UPDATE- Dlaczego chcę to zrobić?
Mam usługę internetową, gdzie każdy „obiekt” dostaje adres URL, np .: example.com/thing/123456/
Teraz te identyfikatory są sekwencyjne. Chcę ukryć fakt, że są sekwencyjne (identyfikatory bazy danych).
Rzeczy na tych stronach nie są "ściśle tajne" ani nic w tym stylu, ale nie powinno być tak łatwo, aby ktoś wślizgnął się do jakiegoś innego przypadkowego obiektu, jak tylko zwiększył ten identyfikator w adresie URL.
W przypadku dwukierunkowego szyfrowania numerycznego identyfikatory adresów URL nie będą w ogóle sekwencyjne, a znalezienie tych obiektów zajęłoby sporo czasu. (Ponadto żądania są ograniczane)
Jedynym powodem, dla którego chcę zachować ten numeryczny, a nie dowolny ciąg, jest to, że zmiana jest całkowitym zamiennikiem kropli, a rzeczy będą działać bez żadnych innych zmian kodu.
Ponadto nie mogę po prostu wygenerować nowych losowych identyfikatorów bazy danych. Muszę obsługiwać to szyfrowanie/odszyfrowywanie w aplikacji.
Dlaczego to robisz? Jaki jest cel? Tworzenie własnej kryptografii jest bardzo niebezpieczne. Nawet zwodniczo proste rzeczy, takie jak "po prostu używaj szyfrów X", mogą mieć nieoczekiwane konsekwencje dla bezpieczeństwa. –
Dobra uwaga. Zaktualizowałem pytanie: – adamJLev
[Format Preserving Encryption] (http://en.wikipedia.org/wiki/Format-preserving_encryption) –