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
154 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 150, userów: 4, ukrytych: 0
hgter, nowy_user, I am vader, Threef

0 użytkownik(ów) na gmczacie i 0 bot(ów)
Shoutbox
Threef (22:31, 26.07.17):
c:\android było po to aby pełna ścieżka do folderów + argumenty kompilacji były krótsze niż 255 znaków
hgter (21:19, 26.07.17):
Rzeczywiście, masz rację. Czyli powinno dać się gdziekolwiek.
I am vader (21:15, 26.07.17):
proponowali c:\android zeby nie bylo spacji
hgter (21:12, 26.07.17):
Przy 1.4 "silnie rekomendowali" c:\android bo mogły być problemy z aktualizacją - może się zmieniło. Co do rozmiaru u mnie udało się zejść do 5gb (trzeba ręcznie obrazy wywalać)
Ignatus (21:09, 26.07.17):
Nie musi byc na C , ja mam na D i dziala elegancko, choc zajmuje mi to chyba z 20-30gb
I am vader (21:05, 26.07.17):
Na C nie mammeijsca
hgter (20:57, 26.07.17):
Wydaje mi się, że gdzieś kiedyś było, że to ma być C. W dodatko najlepiej C:\Android (i tu dwa katalogi z ndk i sdk)
hgter (20:55, 26.07.17):
Napiszę Ci więcej w wątku, który dodałeś (tym o błędach bo tu niezbyt wygodnie)
I am vader (20:55, 26.07.17):
To ścierwo android studio mi pobiera na C zamiast na F mimo bycia zainstalowany na F, co do K***&%^*&^*%*(
hgter (20:54, 26.07.17):
W tym artykule o gm2 jest też jak zainstalować ndk i sdk ręcznie. I cały ten artykuł w 90% powinien być zgodny z gm1.4.
I am vader (20:52, 26.07.17):
Wszystko wskazuje na to ze tamten sdk manager odszedl w zapomnienie i go usuneli. Z nowego nie wiem jak skorzystac aby pobrac pewne stare wersje ktorych 1.4 wymaga
I am vader (20:50, 26.07.17):
Artykul dotyczacy game makera 2 mowi jak to zrobic uzywajac nowego managera ktory jest wbudowany w android studio, a o to mi nie chodzi. Linki juz wczesniej sprawdzalem i nic mi z tego nie wyszlo.
hgter (20:40, 26.07.17):
Tam jest wszystko: co wybrać przy instalacji i jak potem konfigorować Gm2.
hgter (20:39, 26.07.17):
O tu masz dużo o tym: help.yoyogames....-Up-For-Android
hgter (20:36, 26.07.17):
doświadczeń z dotykaniem czegokolwiek odnośnie Androida w GM - zawsze się wysypie a potem schodzą godziny na naprawę.
hgter (20:35, 26.07.17):
Z tego co wynika ze strony googla powinno być chyba zawarte w android studio: developer.andro...tml#sdk-manager Ale kurde mam wrażanie, że jak ja to konfigurowałem, spory czas temu, to trzeba było ściągnąć ndk oraz sdk i zainstalować bez samego Studio. Natomiast wydaje mi się, że na dole strony: developer.andro...ddingComponents jest możliwość ściągnięcia gołego sdk. Ale nie sprawdzę tego u siebie - ma za dużo koszmarnych doświadcze
I am vader (20:09, 26.07.17):
Wie ktos jak pobrac SDK Managera? Nic w sieci nie mowi jak to pobrac/aktywowac a w instalce Android Studio tego nie bylo
Chell (17:34, 26.07.17):
zartowalem, ale dobra robota xD
I am vader (17:08, 26.07.17):
Smutne troche ze taka propozycja w ogole byla wzieta pod uwage. Trzeba zapraszac uzytkownikow a nie ich wypedzac.
Uzjel (14:55, 26.07.17):
Done
Uzjel (14:52, 26.07.17):
Can do, chyba i tak już zmniejszałem to kiedyś
Chell (12:30, 26.07.17):
proponuję zmienić żeby ikona tematu zmieniała się na hot topic po 2 odpowiedziach
Chell (12:29, 26.07.17):
akurat Shill by się śmiała
nowy_user (10:36, 26.07.17):
Nie mówie już o tym, że wielu nowych userów może odnieść wrażenie , że korzystanie z GMa źle wpływa na męską sprawność.
nowy_user (10:34, 26.07.17):
Hej, czy moglibyśmy zrobić coś z tymi botami? Reklamy specyfików na pobudzenie nie wzburzają mnie jakoś szczególnie( choć prywatnie ich nie stosuję), ale pomyślmy o tym że na nasze forum zaglądają też kobiety i dzieci. Pomyślcie sobie, co musi czuć np. Shill, gdy przypadkiem wejdzie na temat promujący takie specyfiki. Pomyśli sobie że jesteśmy męskimi szownistycznymi osłami.
I am vader (0:50, 26.07.17):
Nie zajmuje sie GM'em 8.0, w zyciu go nie tknalem, a 7.0 i starszych juz nie pamietam. Sam widziales ile problemow bylo przy poprzednim temacie, pomysl ile bedzie przy tym.
LolikZabijaka (0:18, 26.07.17):
A czytałeś drugi post ?
I am vader (23:54, 25.07.17):
Da, ale jeżeli chodzi o Twoj problem to nie dam rady pomoc.
LolikZabijaka (23:49, 25.07.17):
Jest tutaj ktoś ?
Chell (21:15, 25.07.17):
patrze na te wszystkie viagra boty i mysle jak gmclan jest otagowany
ANtY (8:51, 25.07.17):
bodajze 1500 pln
Ignatus (21:53, 24.07.17):
orientuje sie ktos jaki jest koszt mini stoiska indie na PGA?
Chell (21:19, 24.07.17):
zbilbym fortune na tym twoim jednorekim bandycie
ΨΧΞ (20:56, 24.07.17):
i jak nieznosze JSa, tak uwazam, ze niestety bedzie on przyszloscia gier i apek mobilnych :<
ΨΧΞ (20:56, 24.07.17):
a ja pochwale sie zrobieniem przykladowej gry w jednorekiego bandyte w 3 dni w JavaScriptcie od zera - silnik powstal wraz z gra github.com/Psic...slots-in-3-days
tramur (12:28, 24.07.17):
Powiedziałem z niską barierą wejścia, bo stworzenie shoot em upa jest troszke trudniejsze niż w GM'ie na kodach, a co do optymalizacji to nie wiem co masz na myśli.
tramur (12:26, 24.07.17):
;P powiedzoałem
Threef (6:02, 24.07.17):
Nie ma niskiego poziomu wejścia. I wymaga masy optymalizacji
tramur (21:33, 23.07.17):
Ja bym optował za czymś zgoła odwrotnym: PICO-8. Ciekawy koncept mitycznej retro konsolki z niską barierą wejścia, ale jak najbardziej z programowaniem.
Ignatus (17:13, 23.07.17):
Raczej nie
exp (16:21, 23.07.17):
a klocki w game makerze traktujecie jako programowanie?
Fervi  (11:29, 23.07.17):
Jasne, że najlepiej jest nauczyć się ich języka itd. Natomiast coś na kształt uproszczonego Dooma (powiedzmy - w skrócie) można zrobić (teoretycznie) bez żadnej linijki kodu dodatkowej. Bardziej to nie tyle Game Maker typowy co edytor map z językiem programowania
Danielus (10:37, 23.07.17):
Prawda ale chodzi raczej o coś innego. Chodzi o prostotę, im coś prościej zrobić tym łatwiej estymować pracę i tym łatwiej to potem utrzymać. Dlatego firmy ciągnie do języków takie jak C# czy Java. Pamiętaj że to tylko narzędzia i zawsze trzeba wybierać odpowiednie narzędzia jeśli możesz zrobić coś w rok w c# to wybierasz c# niż 5 lat w C nawet kosztem 50% spadku wydajności. Chyba że wydajność jest punktem krytycznym projektu.
Wojo (10:22, 23.07.17):
Aż mnie krew zalewa ale to jest nowe pokolenie programistów - idiotów
Wojo (10:22, 23.07.17):
Czytałem blog jakiegoś barana, który pisał, że C# pomimo, że jest mało wydajny to i tak warto się go uczyć bo teraz RAM bez problemu można dokupić
Wojo (10:21, 23.07.17):
No mniej więcej o to mi chodziło. O uproszczenie, co wiąże się z tym, że ludzie nawet nie myślą o optymalizacji
Danielus (10:19, 23.07.17):
W sensie mam na myśli że na początku taki człowiek dostaje gotowce i jest zadowolny a potem mówi "a mam pomysł żeby tu była taka mechanika" i nagle ludzie się uśmiechają "a to sobie napisz bo na to nie ma gotowca" no i projekt upadł.
Danielus (10:17, 23.07.17):
Zawsze wolałem 2d, jakoś przyjemniej się gra i trochę mi szkoda że nie ma już tak potężnych produkcji 2d jak np homm3 ale cuż :f Programować nadal musisz umieć, zmienia się zakres tego co trzeba umieć bo języki się uproszczają i powstają języki vizualne ale ja to wciąż będę nazywał porgoramowaniem bo wymaga takiego samego myślenia jak zwykłe programowanie. Natomiast ludzi przychodzą robić gry myśląc że to ot tak zrobią i potem płacz że miało być bez programowania
Wojo (10:14, 23.07.17):
No bo 3D to skok technologiczny i daje większe możliwości, a miłośników 2D jest znacznie mniej
Ignatus (10:12, 23.07.17):
Nie wiem co ludzie widzą w tym żę coś jest 3D, jak jest słaby pomysł i mechanika to jeden pies jaki masz widok.Wszyscy amatorzy zakładają że 3D od razu daje grze 3punkty do oceny
Ankieta
» Jakiej wersji GameMakera głównie Używasz?
GameMaker: Studio 2
GameMaker: Studio
GameMaker 8.1 i starsze
Żadnej

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.0405 sekund ] [ Liczba zapytań MySQL: 16 ]

thecrims Otserv List Otserv LyricsTown Harry Potter Serwery Gier
dev nodev