Skracanie ciągu znaków złożonego z czterech stringów, z możliwością późniejszego zdekodowania?

0

Cześć, mam taką zagwozdkę, mianowicie mam w programie PESELE zapisane jako stringi. Podstawą apki jest generowanie wniosku na którym te PESELE występują (dla uproszczenia przyjmijmy że zawsze są 4 na wniosek). Potrzebuje zrobić z nich jakoś numer wniosku. To znaczy z tych 4 PESELI sklecić jakiś numer, który nie będzie bezpośrednio połączeniem tych numerów, ale z drugiej strony umożliwi później na podstawie samego numeru wniosku sprawdzenie o jakie PESELe chodziło.

Przykład: mam Pesele:

42345223434, 21312331345, 321455123213, 521545123312

i chciałbym z tego zrobić numer który będzie widniał na wniosku, a po którym później dojdę jakie PESELe zostały użyte. I całkowicie abstrahuje od znaczenia poszczególnych liczb w numerze, bo chce je traktować jako totalnie randomowe stringi (później chce analogiczne rozwiązanie wykorzystać w innej apce: takim pomocniku do papierowych gier RPG, gdzie każdy bohater ma swoje ID). Przyjmuje jednak że Stringi są równej długości.

Jakbyście coś takiego wykonali? A i to żadne szyfrowanie trudne nie musi być, bo to nie apka do użytku komercyjnego, tylko hobbistycznie robiona.

0

Moim zdaniem nie da się.

A nieco dokładniej: PESEL składa się z daty urodzenia, jakiegoś "numeru seryjnego" oraz sumy kontrolnej. I nie wiem, jak chcesz usunąć jego fragment, żeby jednocześnie dało się to odkręcić w sposób niepowodujący konfliktów. Jedynie można by usunąć sumę kontrolną, ale to 1-2 znaki (nie pamiętam w tej chwili), więc dużego zysku nie będzie.

Jeśli usuniesz informacje o dacie, to wtedy nadal do wzorca będą pasować wszystkie osoby z takim samym "numerem seryjnym", czyli teoretycznie z każdego dnia powinna się znaleźć osoba pasująca. Jeśli usuniesz "serial no" to w takim przypadku pasować będą wszyscy urodzeni danego dnia.
Jeśli posiadasz jakąś bazę PESELI klientów, to szanse, że przy wywaleniu daty urodzenia oraz sumy kontrolnej, powtórzą się ludzie z takim samym "numerem serii" są niewielkie, ale nie oznacza to, że mechanizm jest poprawny. Bo szanse są (i z każdym dodanym człowiekiem rosną), że nastąpi konflikt.

Natomiast jeśli uda Ci się opracować sposób, w jaki da się 11-znakowy ciąg skrócić (a potem bezstratnie rozwinąć) do 3-4 znaków, to w ciągu paru tygodni staniesz się najbogatszą osobą na świecie ;)

2

Jedyny sposób jaki widzę na skrócenie (bez używania słownika po stronie aplikacji) to zmiana bazy z 10 na jakąś większą 16 czy 32:

42345223434 -(16)-> 
9dbf8d50a
42345223434 -(32)-> 
17dvhl8a
4234522343421312331345321455123213521545123312 -(32)->
2UU3RLRJ4OGLE82LVD1UQRBQGGP9LFG
0

@neves o i to jest całkiem fajne rozwiązanie i proste, na które nie wpadłem.
Nada się do tego elegancko :)
Dzięki za podsunięcie rozwiązania !

1 użytkowników online, w tym zalogowanych: 0, gości: 1