Nasze strony: gmclan.org gameonly.pl ps-plus.pl gameswithgold.pl n-switch.pl hmt.pl
Fastbar
Powrót do strony głównej
Trzymaj pliki na gmclan.org!
Game Maker w pytaniach i odpowiedziach!
Polska dokumentacja
Tabela wyników ligi 24
Pobierz GM
Akademia GMCLANu
Kategorie bazy artykułów
Artykuły -> Game Maker -> Kursy GML
Treść artykułu
Szyfrowanie tekstu metodą XOR
autor: gnysek (20.04.09) | czas czytania: 1 minuty, 51 sekund
Tworzysz grę i chcesz szybko zaszyfrować np. list wyników, czy zapis stanu gry, tak aby gracz nie mógł go edytować? Trzeba zatem swoje dane zaszyfrować. Jak zrobić to szybko? Używając metody XOR. Jeżeli nie wiesz czym jest XOR odsyłam do lektury na Wikipedię.
XOR ma tą magiczną właściwość, że cokolwiek przez niego przepuścimy daje nam inną liczbę, ale przepuszczone ponownie daje początkowy wynik.

Pierwsze co zrobimy, to skrypt doXor (dodaj skrypt w folderze Scripts).

gml: var _klucz,i,_znaki,_len;
argument0 = string( argument0 );
_znaki = '';
_len = string_length( argument0 );
_klucz = 666;


for ( i = 1; i <= _len; i += 1 )
{
_znaki += chr( ord( string_char_at( argument0, i ) ) ^ _klucz );
}

return _znaki;

Po kolei opowiadam co on robi:
1. Tworzymy zmienne tymczasowe - nasz klucz szyfrowania, i potrzebne do pętli, znaki to zmienna która zapamiętuje zaszyfrowany tekst, a len to długość podanego tekstu.
2. W razie gdyby argument przekazany do skryptu był cyferkami, zamieniamy go na string.
3. Ustalamy znaki na pusty string.
4. Sprawdzamy długość tekstu.
5. Ustalamy sobie nasz klucz. Ten sam klucz musi być użyty do odszyfrowania.
6. Zaczynamy pętlę od 1 do ostatniej litery naszego stringa.
7. Do zmiennej znaki dodajemy wynik działania naszej magicznej funkcji szyfrującej.
Od środka: kopiujemy znak na pozycji i, zamieniamy go na liczbę kodu ASCII ( ord ), za pomocą funkcji XOR ( ^ ) porównujemy z naszym kluczem, a potem z powrotem zamieniamy na string (chr). Całość dodajemy do zmiennej znaki.
8. Zwracamy zaszyfrowany tekst.

Sprawdzamy działanie programu.

Tworzymy nowy obiekt. W create dajemy kod:

gml:
txt = 'test szyfrowania xor';

txt = doXor( txt );
show_message( txt );

txt = doXor( txt );
show_message( txt );

Uruchamiamy program. Jak widać, po pierwszym szyfrowaniu dostajemy co najmniej dziwne literki, po ponownym szyfrowaniu wszystko jest jak było.

Ot i cała tajemnica.

Ahh.... ustawcie własny klucz, dla bezpieczeństwa.
Pamiętajcie, ten sposób jest dość prosty do złamania, ale tak naprawdę każdy system da się złamać, najważniejsze jest to, że 99% osób zniechęci się widząc krzaczki i nie będzie szukać sposobu na odszyfrowanie zawartości. Poza tym, nie każdy wpadnie na to, że szyfrujemy tak banalną metodą ...
głosów: 11 | ocena: 8.45 oceń zasób | dodał: gnysek
Komentarze
stron: 21

2


av

Makary155 (18:56, 18.05.2011)

Dodam że siła kryptograficzna xor leży w długości klucza. Przy spełnieniu kilku warunków można uczynić z niego one-time pad, metodę odporną na brute force. Jedyny problem to przekazanie wygenerowanego hasła odbiorcy.

av

gnysek (20:41, 18.05.2011)

Jeśli szyfrujesz literka po literce, to długość klucza nie ma znaczenia, bo ASCII które mamy w GM8.0 to raptem 255 znaków, zatem kluczem będzie zawsze modulo 256.

av

Makary155 (21:28, 18.05.2011)

Nawet jeśli każda literka ma inny klucz?

av

gnysek (21:34, 18.05.2011)

No, a ja odszyfrujesz jak dasz każdej literce inny klucz ?

av

Platyna (21:51, 18.05.2011)

Wystarczy by kolejność stosowanych kluczy była stała. Jakakolwiek funkcja. Najlepiej potęgi dużej liczby pierwszej.

av

Mentoss (22:11, 18.05.2011)

to ciekawy pomysł...

av

Makary155 (9:41, 19.05.2011)

gnysek: szyfruję tekst "gmclan" szyfrem "omglol". Teraz nowy tekst=ord('g' xor ord('o' + ord('m' xor ord('m' + ord('c' xor ord('g' itd. Nie xoruję przez tą samą liczbę każdą literę, o to mi chodzi.

av

gnysek (14:29, 19.05.2011)

No tak, jeśli to jest stała kombinacja to owszem. Nie wiem dlaczego pomyślałem o pewnej losowości klucza - może dla tego, że to utrudniało by odszyfrowanie... ale z drugiej strony, jako pierwszy znak można by wcale nie podawać pierwszej litery, ale własnie jakiś identyfikator mówiący jaki zestaw kluczy użyć - i wtedy faktycznie jest to jakaś losowośc.

av

Makary155 (14:53, 19.05.2011)

Losowość i unikalność klucza wymagana jest do one-time pada, problem to przekazanie tego klucza odbiorcy. Podobno korespondencje rządów usa i rosji były kodowane w ten sposób + klucz długości samej wiadomości

av

Mentoss (15:44, 19.05.2011)

To też ciekawa opcja, jednakże losowośc klucza jest strasznie prosta, jeżeli pierwszy/trzydziesty drugi/osiemset szesnasty/ostatni znak ma byc taki sam. Wtedy znajdujemy dany znak, na pętli for/while/do wyciągamy sobie klucz i odszyfrowujemy dokument. Zrobiłem sobie nawet paczkę skryptów do tego i szczerze mówiąc - działa.

stron: 21

2



Dodaj komentarz:
Treść:
Menu
Panel użytkownika
Jesteś niezalogowany!

Nie masz konta? Zarejestruj się
Użytkownicy on-line
2 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 1, userów: 1, ukrytych: 0
Chell
Użytkownicy na czacie discord
ANtY (13:36, 5.12.19):
sukces by był jakby dawalo tyle kasy, że mógłby full-time to robić
Threef (12:32, 5.12.19):
Ale nikt tego sukcesem nie nazwie.
Threef (12:31, 5.12.19):
Almora na mobilki coś tam ma już fanów i przynosi jakieś zyski ze sprzedarzy w becie
Threef (12:31, 5.12.19):
Wydał? More like wypuścił i pobrało 100 osób na GMClanie
nowy_user (12:18, 5.12.19):
Hm... Czy Borek nie wydał Hidden Swords oraz Alliens attack on colony, ze swoim studiem Gear Studio? Teraz chyba Borek szykuje prawdziwą bombę, widziałem nowy filimik almory na jego FB, gra rozwali system.
Threef (12:00, 5.12.19):
ANtY przecież samo Unity. Borek robi poza branżą gier
Danielus (23:43, 4.12.19):
Python, wcześniej microserwisy, teraz niby jestem Data Engineer. Ostatnio mnie zaskoczyli na LinkedInie bo oferta na python developera do game devu za 15-18k netto + vat na B2B. Zazwyczaj game dev ma dużo niższe stawki niż reszta branży ale może w końcu coś się zacznie zmieniać.
nowy_user (16:50, 2.12.19):
Bez Unity też można osiągnąć sukces w GameDevie - patrz TeeGee, Buziol, Borek, Anty.
gnysek (16:47, 2.12.19):
Jakbym znał Unity, to bym GMCLANu nie prowadził
Chell (11:29, 2.12.19):
Danielus, w czym pracujesz?
Wojo (21:33, 1.12.19):
Powiem, ze ogarnialem projekty w turbopascalu, VBSie i batchu
Wojo (21:32, 1.12.19):
Cos u was slabo. Ja dostawalem 32k miesiecznie w pierwszej pracy, ale to byla gruba przesada wiec sie zwolnilem -.-
Danielus (18:43, 1.12.19):
Senior jest trochę zdewaluowanym pojęciem teraz. Spodziewam się być seniorem w rok albo dwa. Co mogę polecić to na początku jak najczęściej zmienać pracę. Żadna firma nie chce dawać podwyżek, więc lepiej skakać i zdobywać doświadczenie w różnych miejscach. Mi zajęło osiągnięcie tego 4 lata i 4 różne firmy(po roku w każdej) a zaczynałem od 4k brutto jako junior jeszcze na studiach.
nowy_user (18:38, 1.12.19):
O kurde, to za 5 lat jak dojdziesz do seniora to będziesz miał ok 25k miesięcznie. Brawo, to są niezłe zarobk, można związać koniec z końcemi! Szkoda, że za znajomość GMLa tyle nie płacą.
Danielus (18:34, 1.12.19):
6k netto to grosze - Tyle dostanie każdy mid w najgorszych korpo. Ja rok temu magisterkę skończyłem i teraz mam 13.5k na rękę na umowę o pracę. Nie w GameDevie oczywiście :d
Chell (22:15, 30.11.19):
przedwczoraj dostalem na linkedinie propozycje z 8-12k net na b2b ;p
Sutikku (17:53, 29.11.19):
6k jako junior, zapomniałem dodać
nowy_user (17:20, 29.11.19):
To są dobre wieści. Ostatnio zastanawiałem się nad bootcampem programistycznym, skoro więc w tej branży są takie pieniądze to chyba nie ma się co dłużej zastanawiać
ANtY (16:46, 29.11.19):
>ciezko mi wueirzyć w 6k dla programisty xDDDDDDDDDDD
Konrad-GM (13:58, 29.11.19):
6k senior? raczej mid w korpo, senior to spokojnie wyciągnie 10-15k
nowy_user (10:52, 29.11.19):
Ciężko mi w to uwierzyć, ale kto wie, może dla jakiegoś super seniora.
Sutikku (9:32, 29.11.19):
niektórzy mają większe ambicje, ostatnio widziałem ofertę dla programisty c++ za 6k netto
Wojo (17:48, 28.11.19):
baca tutaj wstawiał screeny jak jego aplikacje są topowe bodajże w wietnamie
nowy_user (15:07, 28.11.19):
W gamedevie też można bardzo dobrze zarobić. W zeszłym tygodniu widziałem ofertę dla Unity developera za 5k netto.
Chell (14:32, 28.11.19):
jak lubi zarabiac kasiore to pewnie nie ;p
Konrad-GM (13:09, 28.11.19):
Może @gnysek wcale nie szuka pracy w gd
nowy_user (23:08, 26.11.19):
Wygląda bardzo fajnie. Swoją drogą to dziwię się że z Twoim skillem nie możesz znaleźć pracy w Gamedevie.
gnysek (14:47, 25.11.19):
www.yoyogames.c...xions-promotion (tutaj tylko dodatkowe etapy)
gnysek (14:41, 25.11.19):
Usunęli je
nowy_user (14:36, 20.11.19):
Wow, nie wiedziałem, nigdy się tym nie chwaliłeś. Myślałem, że w YoYo zajmowałeś się rozwijaniem społeczności użytkowników. Podesłałbyś linki do screenów lub opisów tych gier?
gnysek (11:30, 20.11.19):
Teraz czekam na te zmiany w YYC i wracam do zabawy, w tym czasie inny projekt robię, stronę.
gnysek (11:29, 20.11.19):
Ja na trzech grach dla YYG zarobiłem jakoś 40 tysięcy.
ANtY (16:01, 19.11.19):
nowy_user (19:57, 18.11.19):
Chociaż szkoda, że nie wyszła pełna wersja Przygód Glutexa (wyszło tylko demo), bo możliwe, że wtedy Anaconda wskoczyłby do TOP3.
nowy_user (19:40, 18.11.19):
@Chell, nie uwzględniłem ANtY'ego, bo on tworzy w Unity. No chyba, że Warlocks było robione w GMie, to wtedy wskoczy on na 3 miejsce - o ile mi wiadomo, Warlocksi sprzedali się lepiej niż Borkowa Almora.
Wojo (19:20, 18.11.19):
Był tu gość co swoją grę sprzedawał chyba przez chomikuj
Chell (18:20, 18.11.19):
biedny ANtY
nowy_user (17:38, 18.11.19):
Chyba nie, ale jakby wziął się za sprzedaż Tripa lub Spartana to pewnie byłby na 4 miejscu Gmclanowiczów, co zarobili na grach ( oczywiście za TeeGee, Buziolem i Borkiem).
gnysek (9:43, 18.11.19):
Propa jakąś grę sprzedawał ?
SimianVirus7 (18:51, 17.11.19):
jak dostałem maila, że -50% na export android to jechałem do domu z myślą, że go zakupię, ale okazało się, że to wciąż 400zł
nowy_user (16:11, 17.11.19):
Jakbym był TeeGee, Borkiem lub Propaganją, to bym tyle zapłacił, bo wiedziałbym, że ta kasa zwróci mi się z nawiązką 1 dzień po premierze gry... a tak to trochę drogo.
SimianVirus7 (9:26, 17.11.19):
toż to grosze
Konrad-GM (20:43, 16.11.19):
3,628,800zł za GMa po promocji?
SimianVirus7 (17:29, 15.11.19):
i wszyscy są szczęśliwi
Wojo (9:39, 15.11.19):
Zamiast 20 tysięcy zapłacisz 10!
SimianVirus7 (18:48, 14.11.19):
Yoyo dało -50% na android, html itp dla posiadaczy gm:s2
SimianVirus7 (18:47, 14.11.19):
YoYo dało -50% na android, html itp dla posiadaczy gm:s2
gnysek (13:39, 14.11.19):
Tego nie zrobią, ale Mike ostatnio pryznał że zje... źle zrobił, że dał te brushe zamiast normalnego Ctrl+V i liczy, że to naprawią.
Ankieta
» Ile powinny trwać tury Ligi 24?
24h
48h
54h (piątek od 18:00)
7 dni
inna długość (podałem w komentarzu ankiety)

GMCLAN to serwis o programie Game Maker i nie tylko.
[ Polityka prywatności ]
Copyright © 2002-2019. GMCLAN.ORG
Wszelkie prawa zastrzeżone. Kopiowanie materiałów bez zgody redakcji zabronione!
© 2002-2017 Ranmus (ranmus.pl), © 2017-2019 {=|=} fable_inside();

[ Czas generowania strony: 0.0278 sekund ] [ Liczba zapytań MySQL: 13 ]