Thread View: pl.comp.lang.delphi
23 messages
23 total messages
Started by Pancio
Mon, 12 Mar 2018 10:25
Kodowanie BASE36
Author: Pancio
Date: Mon, 12 Mar 2018 10:25
Date: Mon, 12 Mar 2018 10:25
8 lines
1658 bytes
1658 bytes
Witam serdecznie, Czy ma moze ktos z Was jakies zrodla z funkcjami do kodowania (i odkodowywania) zadanego stringu kodem BASE36, wzglednie moze tez byc BASE32. Bez problemu gotowe przyklady dla Delphi mozna znalezc dla BASE64, ale najbardziej zalezy mi na BASE36. Gotowych konwerterow on-line jest cale mnostwo, ale nigdzie w sieci nie moge sie doszukac gotowego kodu dla Delphi. Pomozecie? Z gory wielkie dzieki. -- Pancio
Re: Kodowanie BASE36
Author: Roman Tyczka
Date: Mon, 12 Mar 2018 11:48
Date: Mon, 12 Mar 2018 11:48
16 lines
1490 bytes
1490 bytes
On Mon, 12 Mar 2018 03:25:34 -0700 (PDT), Pancio wrote: > Czy ma moze ktos z Was jakies zrodla z funkcjami do kodowania (i odkodowywania) zadanego stringu kodem BASE36, wzglednie moze tez byc BASE32. > Bez problemu gotowe przyklady dla Delphi mozna znalezc dla BASE64, ale najbardziej zalezy mi na BASE36. > Gotowych konwerterow on-line jest cale mnostwo, ale nigdzie w sieci nie moge sie doszukac gotowego kodu dla Delphi. > Pomozecie? Z gory wielkie dzieki. Myślę, że mniej czasu byś stracił na konwersję wersji z basica: https://en.wikipedia.org/wiki/Base36 niż pisanie posta ;-) -- pozdrawiam Roman Tyczka
Re: Kodowanie BASE36
Author: Pancio
Date: Mon, 12 Mar 2018 12:10
Date: Mon, 12 Mar 2018 12:10
13 lines
1824 bytes
1824 bytes
> Myślę, że mniej czasu byś stracił na konwersję wersji z basica: > > https://en.wikipedia.org/wiki/Base36 > > niż pisanie posta ;-) Wlasnie przez to napisalem ten post, zeby bylo wiadomo, iz szukam rozwiazania (czyt. gotowca), do konwersji StringToBase36 (i w druga strone). O ile Twoj link jest bardzo pomocny, to zalatwia on jedynie sprawe w kierunku IntegerToBase36. Niemniej jednak, dziekuje za zainteresowanie. -- Pancio
Re: Kodowanie BASE36
Author: Jan Drawski
Date: Mon, 12 Mar 2018 12:12
Date: Mon, 12 Mar 2018 12:12
12 lines
1465 bytes
1465 bytes
> Gotowych konwerterow on-line jest cale mnostwo, ale nigdzie w sieci nie moge sie doszukac gotowego kodu dla Delphi. > Pomozecie? Z gory wielkie dzieki. W Google wpisałem "base36 delphi" i od razu wyskoczyło kilka stron z kodami Delphi. Przykładowe linki: http://www.piclist.com/techref/language/delphi/swag/MATH0034.html http://delphitipsandtricks.blogspot.com/2013/09/convert-decimal-number-string-to-base36.html http://delphi.cjcsoft.net/viewthread.php?tid=47408 -- Pozdrawiam Janek
Re: Kodowanie BASE36
Author: Pancio
Date: Mon, 12 Mar 2018 12:26
Date: Mon, 12 Mar 2018 12:26
20 lines
2237 bytes
2237 bytes
W dniu poniedziałek, 12 marca 2018 13:12:17 UTC+1 użytkownik Jan Drawski napisał: > > Gotowych konwerterow on-line jest cale mnostwo, ale nigdzie w sieci nie moge sie doszukac gotowego kodu dla Delphi. > > Pomozecie? Z gory wielkie dzieki. > > W Google wpisałem "base36 delphi" i od razu wyskoczyło kilka stron z > kodami Delphi. Przykładowe linki: > http://www.piclist.com/techref/language/delphi/swag/MATH0034.html > http://delphitipsandtricks.blogspot.com/2013/09/convert-decimal-number-string-to-base36.html > http://delphi.cjcsoft.net/viewthread.php?tid=47408 > > -- > Pozdrawiam > Janek Dzięki za info, ale też widziałem te strony. Jest z nimi ten sam kłopot, o którym pisałem poprzednio - dotyczą one konwersji liczb, a nie stringów z dowolnie wpisanym tekstem :( -- Pancio
Re: Kodowanie BASE36
Author: Roman Tyczka
Date: Mon, 12 Mar 2018 13:18
Date: Mon, 12 Mar 2018 13:18
31 lines
1977 bytes
1977 bytes
On Mon, 12 Mar 2018 05:10:14 -0700 (PDT), Pancio wrote: >> Myślę, że mniej czasu byś stracił na konwersję wersji z basica: >> >> https://en.wikipedia.org/wiki/Base36 >> >> niż pisanie posta ;-) > > > Wlasnie przez to napisalem ten post, zeby bylo wiadomo, iz szukam rozwiazania (czyt. gotowca), do konwersji StringToBase36 (i w druga strone). > O ile Twoj link jest bardzo pomocny, to zalatwia on jedynie sprawe w kierunku IntegerToBase36. > Niemniej jednak, dziekuje za zainteresowanie. Ale to jest dokładnie to samo, tylko zamiast inta lecisz po tablicy bajtów. Wszystkie te kodowania mają ten sam algorytm, bo to wszak inne systemy liczbowe, nie dziesiętny bazujący na cyfrach 0..9 tylko tu akurat trzydziestoszóstkowy z umownymi cyframi: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ i teraz bierzesz każde 6 bitów z wejścia i mapujesz je na "cyfrę" 36-kową z tej powyższej tablicy. Proste :-) ps. weryfikacji możesz dokonywać na onlinowych encoderach -- pozdrawiam Roman Tyczka
Re: Kodowanie BASE36
Author: Pancio
Date: Mon, 12 Mar 2018 13:48
Date: Mon, 12 Mar 2018 13:48
15 lines
2224 bytes
2224 bytes
> Tu akurat trzydziestoszóstkowy z umownymi cyframi: > > 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ > > i teraz bierzesz każde 6 bitów z wejścia i mapujesz je na "cyfrę" 36-kową z > tej powyższej tablicy. > > Proste :-) Cześć, Tak, w teorii wydawało mi się to proste, ale po kilku dniach dłubania postanowiłem jednak poszukać jakiegoś gotowca. Jednak sprawa okazuje się nie całkiem taka prosta, bo gotowych listingów (ot tak mi się przypomniało jeszcze z czasów 8-bitowych Atari) nigdzie nie mogę znaleźć. Podejrzewam, że jest to zaledwie kilka linijek kodu (w jedną stronę) i kolejne kilka linijek w drugą (decrypt). Ale jakoś nie za bardzo mi to wychodzi :( No i przez to szukam tutaj pomocy i rozwiązania. -- Pancio
Re: Kodowanie BASE36
Author: Roman Tyczka
Date: Mon, 12 Mar 2018 13:52
Date: Mon, 12 Mar 2018 13:52
15 lines
1850 bytes
1850 bytes
On Mon, 12 Mar 2018 06:48:07 -0700 (PDT), Pancio wrote: >> i teraz bierzesz każde 6 bitów z wejścia i mapujesz je na "cyfrę" 36-kową z >> tej powyższej tablicy. >> >> Proste :-) > > Tak, w teorii wydawało mi się to proste, ale po kilku dniach dłubania postanowiłem jednak poszukać jakiegoś gotowca. Jednak sprawa okazuje się nie całkiem taka prosta, bo gotowych listingów (ot tak mi się przypomniało jeszcze z czasów 8-bitowych Atari) nigdzie nie mogę znaleźć. > Podejrzewam, że jest to zaledwie kilka linijek kodu (w jedną stronę) i kolejne kilka linijek w drugą (decrypt). Ale jakoś nie za bardzo mi to wychodzi :( No i przez to szukam tutaj pomocy i rozwiązania. Wrzuć kod jaki wyskrobałeś, zobaczymy czy coś da się w nim poprawić. -- pozdrawiam Roman Tyczka
Re: Kodowanie BASE36
Author: Jan Drawski
Date: Mon, 12 Mar 2018 15:54
Date: Mon, 12 Mar 2018 15:54
10 lines
1385 bytes
1385 bytes
> Jest z nimi ten sam kłopot, o którym pisałem poprzednio - dotyczą one konwersji liczb, a nie stringów z dowolnie wpisanym tekstem :(
Ale każdy znak to liczba. Np:
Memo1.lines.add(IntToStr(Ord(' ')));
Podaj tekst do konwersji, wynik, link do kalkulatora online, który to
realizuje.
--
Pozdrawiam
Janek
Re: Kodowanie BASE36
Author: Pancio
Date: Mon, 12 Mar 2018 16:00
Date: Mon, 12 Mar 2018 16:00
11 lines
2039 bytes
2039 bytes
> Ale każdy znak to liczba. Np:
> Memo1.lines.add(IntToStr(Ord(' ')));
> Podaj tekst do konwersji, wynik, link do kalkulatora online, który to
> realizuje.
Oczywiście jest to jakieś rozwiązanie, ale zamiast posiłkować się zewnętrznymi konwerterami, to jednak wolałbym, aby to aplikacja kodowała zadany tekst.
Próbuję już któryś dzień odszukać czegoś w sieci, ale niezbyt dobrze mi idzie, a sam niestety nie potrafię ogarnąć tego tematu.
No i utknąłem w martwym punkcie...
--
Pancio
Re: Kodowanie BASE36
Author: Krzysztof Szyszka
Date: Mon, 12 Mar 2018 16:42
Date: Mon, 12 Mar 2018 16:42
26 lines
2153 bytes
2153 bytes
> > Wlasnie przez to napisalem ten post, zeby bylo wiadomo, iz szukam rozwiazania (czyt. gotowca), > > do konwersji StringToBase36 (i w druga strone). > > O ile Twoj link jest bardzo pomocny, to zalatwia on jedynie sprawe w kierunku IntegerToBase36. > > Niemniej jednak, dziekuje za zainteresowanie. > > Ale to jest dokładnie to samo, tylko zamiast inta lecisz po tablicy bajtów. > Wszystkie te kodowania mają ten sam algorytm, bo to wszak inne systemy > liczbowe, nie dziesiętny bazujący na cyfrach 0..9 tylko tu akurat > trzydziestoszóstkowy z umownymi cyframi: > > 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ > > i teraz bierzesz każde 6 bitów z wejścia i mapujesz je na "cyfrę" 36-kową z > tej powyższej tablicy. > > Proste :-) Może dla Ciebie to jest proste, ale dla mnie to jednak byłoby niezłe wyzwanie, żeby zmapować 64 wartości (6 bitów) na 36 "cyfr" a potem te "cyfry" zdekodować ;-) -- pozdrowienia Krzysztof Szyszka, X-Files Software Developer of X-DBGrid Component Embarcadero Technology Partner http://www.x-files.pl/
Re: Kodowanie BASE36
Author: Krzysztof Szyszka
Date: Mon, 12 Mar 2018 16:49
Date: Mon, 12 Mar 2018 16:49
19 lines
2005 bytes
2005 bytes
> > Ale każdy znak to liczba. Np:
> > Memo1.lines.add(IntToStr(Ord(' ')));
> > Podaj tekst do konwersji, wynik, link do kalkulatora online, który to realizuje.
>
> Oczywiście jest to jakieś rozwiązanie, ale zamiast posiłkować się zewnętrznymi konwerterami, to
> jednak wolałbym, aby to aplikacja kodowała zadany tekst.
To nie jest żadne rozwiązanie, bo nie może być, bo Base36 nie stosuje się do kodowania stringów,
czy też w ogólności do kodowania ciągów bajtów. Do kodowania stringów (bajtów) możesz używać
Base 16, Base32, Base64, a tu masz oficjalne RFC, które opisuje te 3 kodowania:
https://tools.ietf.org/html/rfc4648
--
pozdrowienia
Krzysztof Szyszka, X-Files Software
Developer of X-DBGrid Component
Embarcadero Technology Partner
http://www.x-files.pl/
Re: Kodowanie BASE36
Author: Jan Drawski
Date: Mon, 12 Mar 2018 17:41
Date: Mon, 12 Mar 2018 17:41
13 lines
1671 bytes
1671 bytes
>> Podaj tekst do konwersji, wynik, link do kalkulatora online, który to >> realizuje. > > Oczywiście jest to jakieś rozwiązanie, ale zamiast posiłkować się zewnętrznymi konwerterami, to jednak wolałbym, aby to aplikacja kodowała zadany tekst. Źle mnie zrozumiałeś, powtórzę: "Podaj tekst do konwersji, wynik" Żebym mógł sprawdzić jak przetestuję jakiś kod w Delphi. "link do kalkulatora online" - żebym tam też to mógł sprawdzić, zweryfikować. -- Pozdrawiam Janek
Re: Kodowanie BASE36
Author: Roman Tyczka
Date: Mon, 12 Mar 2018 20:25
Date: Mon, 12 Mar 2018 20:25
23 lines
1996 bytes
1996 bytes
On Mon, 12 Mar 2018 17:42:50 +0100, Krzysztof Szyszka wrote: >> Ale to jest dokładnie to samo, tylko zamiast inta lecisz po tablicy bajtów. >> Wszystkie te kodowania mają ten sam algorytm, bo to wszak inne systemy >> liczbowe, nie dziesiętny bazujący na cyfrach 0..9 tylko tu akurat >> trzydziestoszóstkowy z umownymi cyframi: >> >> 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ >> >> i teraz bierzesz każde 6 bitów z wejścia i mapujesz je na "cyfrę" 36-kową z >> tej powyższej tablicy. >> >> Proste :-) > > Może dla Ciebie to jest proste, ale dla mnie to jednak byłoby niezłe wyzwanie, > żeby zmapować 64 wartości (6 bitów) na 36 "cyfr" a potem te "cyfry" zdekodować ;-) Świnto racjo :-) Trza by po 5 bitów kodować lub tablicę rozszerzyć jak w Base64, ale reszta bez zmian. -- pozdrawiam Roman Tyczka
Re: Kodowanie BASE36
Author: Krzysztof Szyszka
Date: Mon, 12 Mar 2018 21:06
Date: Mon, 12 Mar 2018 21:06
28 lines
2235 bytes
2235 bytes
> >> Ale to jest dokładnie to samo, tylko zamiast inta lecisz po tablicy bajtów. > >> Wszystkie te kodowania mają ten sam algorytm, bo to wszak inne systemy > >> liczbowe, nie dziesiętny bazujący na cyfrach 0..9 tylko tu akurat > >> trzydziestoszóstkowy z umownymi cyframi: > >> > >> 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ > >> > >> i teraz bierzesz każde 6 bitów z wejścia i mapujesz je na "cyfrę" 36-kową z > >> tej powyższej tablicy. > >> > >> Proste :-) > > > > Może dla Ciebie to jest proste, ale dla mnie to jednak byłoby niezłe wyzwanie, > > żeby zmapować 64 wartości (6 bitów) na 36 "cyfr" a potem te "cyfry" zdekodować ;-) > > Świnto racjo :-) Trza by po 5 bitów kodować ... No i tak właśnie się robi, ale to Base32, a nie Base36. Odpowiednie RFC dla Base32 podałem już wcześniej. Niby podobne do Base64 ale trudniejsze do realizacji. Do tego dochodzi wybór odpowiedniego "alfabetu". -- pozdrowienia Krzysztof Szyszka, X-Files Software Developer of X-DBGrid Component Embarcadero Technology Partner http://www.x-files.pl/
Re: Kodowanie BASE36
Author: mmm
Date: Tue, 13 Mar 2018 10:39
Date: Tue, 13 Mar 2018 10:39
23 lines
1925 bytes
1925 bytes
> Źle mnie zrozumiałeś, powtórzę: "Podaj tekst do konwersji, wynik" > Żebym mógł sprawdzić jak przetestuję jakiś kod w Delphi. > "link do kalkulatora online" - żebym tam też to mógł sprawdzić, > zweryfikować. > Ja też bym chętnie zobaczył taki konwerter online (albo wynik) dla stringów bo jakoś nie widzę jak to ma działać. Jedyna koncepcja jaka przychodzi do głowy to czytać tekst po 5 bitów (i mamy wtedy wartości 0-31) i te liczby kodować BASE36 , bo inaczej to jak ? ALA = string 65 76 65 = dziesietnie 01000001 01001100 01000001 = binarnie 010|00001 0|10011|00 0100|0001 = podzial 5bit 00001 00010 10011 00010 0100 = 5bit 1 2 19 2 4 = dziesietnie 1 2 J 2 4 = BASE36 12J24 = wynikowy tekst M
Re: Kodowanie BASE36
Author: Jan Drawski
Date: Tue, 13 Mar 2018 11:09
Date: Tue, 13 Mar 2018 11:09
12 lines
1693 bytes
1693 bytes
> Jedyna koncepcja jaka przychodzi do głowy to czytać tekst po 5 bitów > (i mamy wtedy wartości 0-31) i te liczby kodować BASE36 , bo inaczej to > jak ? Bez jakiegoś przykładu to jest tylko gdybanie. W praktyce może być różnie, ktoś do algorytmu może wrzucać tylko po 4 bity, żeby mu było prościej :) O ile w ogóle to robi bo po prośbie przykładu Pancio najpierw nie zrozumiał a później coś ucichł... -- Pozdrawiam Janek
Re: Kodowanie BASE36
Author: Pancio
Date: Tue, 13 Mar 2018 11:38
Date: Tue, 13 Mar 2018 11:38
11 lines
2420 bytes
2420 bytes
> Bez jakiegoś przykładu to jest tylko gdybanie. W praktyce może być > różnie, ktoś do algorytmu może wrzucać tylko po 4 bity, żeby mu było > prościej :) O ile w ogóle to robi bo po prośbie przykładu Pancio > najpierw nie zrozumiał a później coś ucichł... Kolejny dzień próbowałem dłubać z tym pseudo standardem kodowania i znów poległem. W sieci dla przykładu można znaleźć taki oto konwerter: www.dcode.fr/base-36-cipher Jednak coraz mocniej skłaniam się (jednak!) co BASE64. Mam do tego gotowy kod źródłowy i to w dodatku działający w 100%. Może w przyszłości jeszcze wrócę do tematu, gdy dojrzeję do tego, aby operować na samych bitach zadanego stringu. -- Pancio
Re: Kodowanie BASE36
Author: Jan Drawski
Date: Tue, 13 Mar 2018 12:12
Date: Tue, 13 Mar 2018 12:12
11 lines
2004 bytes
2004 bytes
> Kolejny dzień próbowałem dłubać z tym pseudo standardem kodowania i znów poległem. W sieci dla przykładu można znaleźć taki oto konwerter: > www.dcode.fr/base-36-cipher > Jednak coraz mocniej skłaniam się (jednak!) co BASE64. Mam do tego gotowy kod źródłowy i to w dodatku działający w 100%. Może w przyszłości jeszcze wrócę do tematu, gdy dojrzeję do tego, aby operować na samych bitach zadanego stringu. Ale na jej stronie masz algorytmy i na pierwszy rzut oka widać, że to jest lipa jeżeli chodzi o tekst. Wpisz (wklej) tam paręset znaków i sprawdź wynik: "size limited to 100" :) -- Pozdrawiam Janek
Re: Kodowanie BASE36
Author: mmm
Date: Tue, 13 Mar 2018 12:38
Date: Tue, 13 Mar 2018 12:38
17 lines
1965 bytes
1965 bytes
> Ale na jej stronie masz algorytmy i na pierwszy rzut oka widać, że to > jest lipa jeżeli chodzi o tekst. Wpisz (wklej) tam paręset znaków i > sprawdź wynik: "size limited to 100" :) > Przy 100 znakach bez spacji policzenie 36^99 nie jest prostą sprawą. Tego już nie ogarnie żaden wbudowany typ danych . Jak człowiek ma mało czasu to nie utrudnia sobie życia wymyślając problemy. Z treści autora wynika ze może użyć base64, wiec powinien tak zrobić, jedynym racjonalnym wytłumaczeniem użycia BASE36 jest integracja z zewnętrznym systemem który wypluwa w dziwnym standardzie, ale to tez powinna zrobić ta druga strona. M
Re: Kodowanie BASE36
Author: immo
Date: Tue, 13 Mar 2018 13:40
Date: Tue, 13 Mar 2018 13:40
13 lines
2468 bytes
2468 bytes
W dniu wtorek, 13 marca 2018 12:38:14 UTC+1 użytkownik Pancio napisał: > > Bez jakiegoś przykładu to jest tylko gdybanie. W praktyce może być > > różnie, ktoś do algorytmu może wrzucać tylko po 4 bity, żeby mu było > > prościej :) O ile w ogóle to robi bo po prośbie przykładu Pancio > > najpierw nie zrozumiał a później coś ucichł... > > Jednak coraz mocniej skłaniam się (jednak!) co BASE64. Mam do tego gotowy kod źródłowy i to w dodatku działający w 100%. Może w przyszłości jeszcze wrócę do tematu, gdy dojrzeję do tego, aby operować na samych bitach zadanego stringu. Do BASE64 masz gotowe funkcje w samym Delphi (EncdDecd). pozdrawiam, Przemek O.
Re: Kodowanie BASE36
Author: Jan Drawski
Date: Tue, 13 Mar 2018 15:17
Date: Tue, 13 Mar 2018 15:17
19 lines
2169 bytes
2169 bytes
> Przy 100 znakach bez spacji policzenie 36^99 nie jest prostą sprawą. Dokładnie o to chodzi. > Z treści autora wynika ze może użyć base64, wiec powinien tak zrobić Nie wiadomo do czego mu to. > jedynym racjonalnym wytłumaczeniem użycia BASE36 jest integracja z > zewnętrznym systemem który wypluwa w dziwnym standardzie, ale to tez > powinna zrobić ta druga strona. Podał za mało informacji. Może nie ma wpływu na drugą stronę bo jeżeli ma to upieranie się przy Base36 jest bezsensowne, tym bardziej, że kosztowało go to dużo czasu. -- Pozdrawiam Janek
Re: Kodowanie BASE36
Author: Pancio
Date: Wed, 14 Mar 2018 07:14
Date: Wed, 14 Mar 2018 07:14
10 lines
2906 bytes
2906 bytes
> Nie wiadomo do czego mu to. Kodowanie do Base36 miało mi służyć wyłącznie do jednego. Otóż napisałem bardzo prościutki algorytm XOR do szyfrowania licencji programu na podstawie kilku danych, m.in. NIPu i REGONu firmy. Tyle, że wynikiem takiego szyfrowania jest ją różne kody ASCII, a więc sporo "krzaczków". Całkiem po prosty chciałem to zakodować do postaci wyłącznie dużych liter i cyfr. Wydawało mi się, że najlepszym rozwiązaniem będzie właśnie Base36, ale więcej z tym zachodu niż myślałem. Wiem, że zaraz odezwą się głosy, że szyfr XOR jest bardzo prostu do złamania i jest w tym sporo racji. Natomiast dla moich klientów, to i tak jest coś w stylu węzła gordyjskiego, a więc w zupełności wystarczalne. Naprawdę stokrotne dzięki za pomoc, ale widząc, że to wcale nie jest taka prosta sprawa, postanowiłem przejść na standard Base64 (względnie Base32, ale tutaj też znalazłem kilka haczyków). Czyli jednak Base64. -- Pancio
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads