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
Kategorie bazy artykułów
Artykuły -> Game Maker -> Kursy GML
Treść artykułu
Szyfrowanie tekstu metodą XOR
autor: gnysek (20.04.09)
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
107 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 104, userów: 3, ukrytych: 0
bapedbof, PatrykPlayingPOLSKA, ♔ Adriann ♔

0 użytkownik(ów) na gmczacie i 0 bot(ów)
Shoutbox
Gibki Kaktus (0:49, 25.04.17):
Ja będę!
I am Lord (18:41, 24.04.17):
Ok linki wrzucę
Threef (18:30, 24.04.17):
I wrzuć może linki w jeden post
I am Lord (18:24, 24.04.17):
Goście mogą głosować w ankiecie?
I am Lord (18:23, 24.04.17):
Trzeba zrobić regulamin albo jakieś zasady
Threef (17:53, 24.04.17):
Lord napisz może że głos liczony tylko jako komentarz
I am vader (16:48, 24.04.17):
Gnysek Kek
gnysek (16:21, 24.04.17):
@Wojo: Pyrkon chyba w ten weekend.
gnysek (16:20, 24.04.17):
nastąpiła frykcja między użytkownikami
Dester (16:09, 24.04.17):
ale poleciał offtopic w pytaniach początkujących
Wojo (8:27, 24.04.17):
A kiedy jest?
Adriann (8:19, 24.04.17):
Ja!
Ignatus (8:08, 24.04.17):
Kto z forum finalnie zamelduje sie na Pyrkonie?
Wojo (5:37, 24.04.17):
Ja mam dziwne wrażenie że chcesz być lubiany yxe ale i tak pieprzysz od rzeczy
ΨΧΞ (1:36, 24.04.17):
to brzmi jak slynne "polaki cebulaki". jaki gmclan, taki testo
ΨΧΞ (1:33, 24.04.17):
mam dziwne wrażenie, że wyłącznie ja załapałem iż wojo pieprzy dla jaj.
Ignatus (21:34, 23.04.17):
Nabijaj się z ludzi że nie pracują.Płacz że poniedziałek i praca
Wojo (20:51, 23.04.17):
Znowu poniedziałek no ja pierdziele
Gibki Kaktus (13:40, 23.04.17):
Faktycznie XD Ale nie mam czasu, nad AD do Pyrkonu pracować trzeba
Threef (13:00, 23.04.17):
Jeszcze trwa!
Gibki Kaktus (12:36, 23.04.17):
Taki fajny temat ligi był ;_;
I am Lord (19:36, 22.04.17):
fajno
Threef (18:18, 22.04.17):
Głównie po to aby zmotywować i nauczyć zaawansowanych graczy, ale na tyle prosty że podstawowa znajomość GML wystarczy
Threef (18:16, 22.04.17):
Dobra, liga ligą, ale niedługo będę robić pełnoprawny konkurs dla was.
Nikas (12:14, 22.04.17):
Lumpy są zajebiste.
Wojo (7:18, 22.04.17):
O to nie wiedziałem że w lumpeksie można takie rzeczy kupow
Adriann (21:21, 21.04.17):
cholera! taki fajny temat na ligę a ja muszęPyrkon ogarniać
Ignatus (20:52, 21.04.17):
Znajoma natomiast lata po lumpkach w poszukiwaniu zabawek z superbohaterami ktore wystawia potem na allegro i z tego co mowi dobrze na tym wychodzi
Ignatus (20:48, 21.04.17):
W lumpeksach spko fant mozna znalezc, ale trezba sie nachodzic sporo i to najlepiej w dniu dostawy.Znajomy za 30zł kupil dzialajace PSP, z rzeczy nie bedacych ubraniami;p
I am Lord (20:26, 21.04.17):
To zrób hovertanka
owyn (20:22, 21.04.17):
pierdole, nie lubie czolgow.. goncie sie ((
Threef (20:16, 21.04.17):
Nie tylko liga ale też Ludum Dare!
owyn (20:14, 21.04.17):
w koncu liga! ale zajebany robota jestem w ten weekend.. moze sie uda..
I am Lord (19:57, 21.04.17):
huh? dopiero trzy były? Myślałem że więcej
Threef (19:48, 21.04.17):
Spojrzałem w istorię i na ostatnie 2 ligi nikt nie oddał gry. Po czym przypomniało mi się że uploader nie działa
Adriann (19:45, 21.04.17):
omujborze, tak to ona;3
Uzjel (19:24, 21.04.17):
Czy to liga za 56 minut?!
Wojo (17:47, 21.04.17):
A Versace jest?
I am Lord (16:31, 21.04.17):
Są markowe ubrania ale rozchodza się po godzinie od dostawy
Wojo (16:06, 21.04.17):
w ogole co sadzicie o kumpowaniu w lumpexach ? ja chyba tak sobie zobacze z ciekawości co tam jest. serio z ciekawości...
Wojo (16:05, 21.04.17):
ale ignatus szanuje ze masz zone i pracujesz to sie ceni
Wojo (16:05, 21.04.17):
więc do roboty się zabierzcie nieroby
Ignatus (16:02, 21.04.17):
Ale fakt-czekanie na gotowe tez nic nie da
Ignatus (16:02, 21.04.17):
i teraz siedzi na dupie przed kompem
Ignatus (16:02, 21.04.17):
Wiec wojo lepiej sie zastanow piszac o tym ze jak ktos nie pracuje to jest nierob i biedak, bo moze wlasnie osiagnal w zyciu 100x wiecej niz Ty kiedykolwiek
Wojo (16:01, 21.04.17):
a nie czekacie na gotowe
Wojo (16:01, 21.04.17):
a czy ja się użalam nad sobą ? mowie ze do roboty lessery
Ignatus (16:01, 21.04.17):
Jedno wiem na pewno- jeszcze nikt się nie dorobił na użalaniu nad sobą
Ankieta
» Czy jesteś szczery odpowiadając w ankietach w Internecie?
Tak
Nie

GMCLAN to serwis o programie Game Maker i nie tylko.
Copyright © 2002-2017. GMCLAN.ORG
Wszelkie prawa zastrzeżone. Kopiowanie materiałów bez zgody redakcji zabronione!

[ Czas generowania strony: 0.01446 sekund ] [ Liczba zapytań MySQL: 16 ]

thecrims Otserv List Otserv LyricsTown Harry Potter Serwery Gier
dev nodev