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
109 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 107, userów: 2, ukrytych: 0
ediepl, ♔ Adriann ♔

0 użytkownik(ów) na gmczacie i 0 bot(ów)
Shoutbox
I am Lord (22:58, 21.02.17):
oooo w dooma grywasz, przybij pionę
Exigo (22:10, 21.02.17):
O, nie wiedziałem że jest grupa GMC na Steamie. Dołączyłem.
I am Lord (21:48, 21.02.17):
będzie jedna osoba to też wygra
Sutikku (20:52, 21.02.17):
nagrody dla najlepszych trzech miejsc. Czyli jednak obstawiamy, że będzie więcej niż trzy prace xd
Uzjel (20:34, 21.02.17):
Dzięki Zachęcam do dołączenia steamcommunity....groups/GMPolska
I am Lord (20:27, 21.02.17):
ale nei zdąrzyłem kliknąć, szybko się schowało
I am Lord (20:26, 21.02.17):
właśnie też mi wyskoczyło jak grałem
Chell (20:24, 21.02.17):
swietny pomysl z powiadomieniem na steamie
Uzjel (20:22, 21.02.17):
W piątek liga z nagrodami
ΨΧΞ (17:44, 21.02.17):
plus: ja mam 8, nie 10
ΨΧΞ (17:44, 21.02.17):
żeby przypadkowo nie łapał inputu - jak chcę searcha zrobić, to klikam klawisz Windy i wpisuje czego chce - bang ;>
Danielus (14:35, 21.02.17):
@yxe jak można mieć wyłączonego searchbara? Najlepszy feature jaki win 10 ma do zaoferowania :f
I am vader (10:26, 21.02.17):
Zapewne oba. ale DS'y są zajebiste
Wojo (10:24, 21.02.17):
albo coś bierzecie albo to przejaw głębokiej deprseji
gnysek (10:21, 21.02.17):
<rap>Używam ds_listy, jestem zajebisty, aha aha... bum tsss tss, bum tss tss </rap>
Wojo (10:02, 21.02.17):
aha to spoks
ΨΧΞ (10:00, 21.02.17):
to nie samo menu, tam pod spodem działa podstawa komunikacji z serwerem (obsługa sklepu części, kont użytkowników, sesje) - nim zrobię kolejną część flow klienta, musze dopisać ficzur też po stronie backendu, dlatego więcej póki co dzieje się po tej niewidocznej stronie zwanej serwerem
Wojo (9:57, 21.02.17):
Czyli ma to działać na zasadzie podobnej jak colobot. No ciekawe ale czy po kilkunastu latach programowania chwalenie się menu jest trochę nie na miejscu ?
ΨΧΞ (2:30, 21.02.17):
po udanym teście symulacji maszyn przyszedł czas na początki prototypu RoboCodera www.youtube.com...h?v=9Avjxh6SV6o
Threef (18:01, 20.02.17):
Andro...co? Torment za tydzień!
Ignatus (20:31, 19.02.17):
Nie ma średnio,zasuwać trzeba ostro
ANtY (16:12, 19.02.17):
no tak srednio z ta silka
Chell (13:14, 19.02.17):
w marcu to wychodzi andromeda
Wojo (13:03, 19.02.17):
dawajcie na siłkę od marca
I am vader (15:33, 18.02.17):
Ale ten, zle sprawdzilem, to byl 2014
I am vader (15:32, 18.02.17):
To forum jest za małe na nas dwóch! Przygotuj się na pojedynek.
I am Lord (15:31, 18.02.17):
Mistrz może być tylko 1
I am vader (15:20, 18.02.17):
Skoro IamLord ma Mistrz ligi 2013 czemu nie mam Mistrz Ligi 2015? Było w tamtym roku bardzo dużo tur! Obiecaliście nawet nagrody za tamten rok, ale nie było żadnych, to chociaż dopisek mile widziany
I am vader (18:51, 17.02.17):
Nie podjąłem
Wojo (9:56, 17.02.17):
Jaką decyzję podjoles Vader,?
Chell (21:59, 16.02.17):
yup
Threef (21:36, 16.02.17):
Maciek?
Chell (21:13, 16.02.17):
update, gosc ktorego mialem za Exigo to brat Sosa
I am vader (20:38, 16.02.17):
Ah te decyzje..
I am Lord (18:48, 16.02.17):
no a pozostałe środowiska z dobrym 3D mają niewygodne licencje więc nikt na nich nie robi
Wojo (18:39, 16.02.17):
jest popularne bo brakuje dobrych narzędzi do tworzenia gier, a unity jako jedno z nielicznych oferuje jako-taką obsługę 3d
Wojo (18:38, 16.02.17):
vader każdy dev w unity robi syf bo unity to syf jeśli chodzi o 3D
ΨΧΞ (18:16, 16.02.17):
ja bym powiedzial, ze najwiekszym szitem z unity jest system pluginow, jak i sama jakosc pluginow
ΨΧΞ (18:14, 16.02.17):
unity ssie? tak. ale nie ma tak znowu strasznej wydajnosci - wlasciwie to z silnikow 3D plasuje sie na trzecim, czy czwartym miejscu - wbrew temu, co devi lubia mowic to wiekszosc problemow z wydajnoscia gier tworzonych w unity pochodzi od gunwo kodu devów.
I am vader (16:47, 16.02.17):
I tak, wiem ze Antek uzywa unity, ale chodzi mi tu o 2d vs 3d.
I am vader (16:46, 16.02.17):
Gry 3D wydaja nam sie lepsze, ale to 2D otwiera bramy malym devom. Zauwaz ze kazdy maly dev robiacy w Unity 3D robi syf, bo ani gameplay ani grafika nie sa dobre. A w 2D mozna odwalac takie cuda jak ANtY
Wojo (16:01, 16.02.17):
jakby gm miał jakieś ludzkie wspieranie 3d to by wyparł te unity
Wojo (16:00, 16.02.17):
jakim cudem coś takiego ma prawo bytu ? przeciez to ma zerową wydajność
Wojo (16:00, 16.02.17):
ale unity jest badziewne
Sutikku (23:52, 15.02.17):
to super, dobrze że zasnąłem i nie zacząłem jej robić, żeby nie było xd
Uzjel (23:44, 15.02.17):
A to się nie wyklucza
Sutikku (23:28, 15.02.17):
a ja już miałem pomysł na walentynkową grę
Adriann (23:27, 15.02.17):
jak nagrodą będą czekoladki to kcę
Uzjel (23:20, 15.02.17):
Będzie liga, z nagrodami!
PatrykPlayingPOLSKA (21:50, 14.02.17):
popieram ^^
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.01361 sekund ] [ Liczba zapytań MySQL: 16 ]

thecrims Otserv List Otserv LyricsTown Harry Potter Serwery Gier
dev nodev