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
101 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 97, userów: 4, ukrytych: 0
Uzjel, PatrykPlayingPOLSKA, ♔ Wojo ♔ , ALT

0 użytkownik(ów) na gmczacie i 0 bot(ów)
Shoutbox
gnysek (14:14, 29.05.17):
na 100 sposobów w sumie
gnysek (14:14, 29.05.17):
samo wyświetlanie tak tekstu to jest 10 minut roboty - ale, żeby w tym czasie gra stała - no to już trzeba odpowiedni system zrobić
nowy_user (12:38, 29.05.17):
Ok, poszukam , dzięki
Fervi  (11:32, 29.05.17):
Jest parę przykładów, np. Pokemon na Youtube. Samemu też można coś wymyśleć
Wojo (10:57, 29.05.17):
Na steamie masz gms
nowy_user (10:37, 29.05.17):
Hej , czy ktoś wie jak zrobić takie dialogi, w których poszczególne wypowiedzi pojawiają się literka po literce? Tak jak w starych grach na gameboya np. pokemony albo harvest moon
PatrykPlayingPOLSKA (10:29, 29.05.17):
www.yoyogames.c...oad/studio/free (powinien być autodownload)
Adriann (9:44, 29.05.17):
Hej, da się jeszcze normalnie dostać standardową wersję gms za darmo?
Chell (7:07, 29.05.17):
podoba mi się to jak zlałeś gma xD
Fervi  (18:10, 28.05.17):
Aczkolwiek będą jakieś ogólne teksty z opisu tworzenia Occulta
Fervi  (18:10, 28.05.17):
Jest jeszcze wersja angielska. Oczywiście ktoś może powiedzieć, że mało, natomiast tekst miał zachęcać do klepania gierek, niż wyjaśniać milion mechanizmów
I am Lord (9:39, 28.05.17):
Jest napracowanie
Threef (8:22, 28.05.17):
Nie poznałem exigo!
Nikas (1:56, 28.05.17):
Dzięki za browara Threef!
Wojo (18:03, 27.05.17):
poszło
Chell (20:18, 26.05.17):
głos zapisany, powodzenia
I am Lord (19:13, 26.05.17):
I matka też, chyba bardziej haha
I am Lord (19:13, 26.05.17):
Dzięki, dzieciuch się ucieszy
PatrykPlayingPOLSKA (19:09, 26.05.17):
głos oddany
I am Lord (18:55, 26.05.17):
Nikas (18:21, 26.05.17):
Zrobione. Play doh i plac zabaw. Będą mieli cała piaskownicę z tego super wyglądającego piasku którym niestety nigdy nie miałem okazji się pobawić????? xD
I am Lord (18:08, 26.05.17):
Pomożecie mojemu siostrzeńcowi oddać głos na pracę z "Piły" "Grupa: DZIELNE ZUCHY" wymarzony-plac-...da59e3c0de745e5
nowy_user (16:24, 26.05.17):
Ogolił głowę na 0mm ?
Wojo (16:22, 26.05.17):
I chyba nie muszę wspominać że pozbył się łysienia raz na zawsze
Wojo (16:21, 26.05.17):
Ten bezrobotny dwudziestoparolatek zarabia krocie w internecie i umawia się ze wszystkimi samotnymi mamuśkami w okolicy i powiększa swojego penisa dzięki jednej prostej kryptowalucie. ZOBACZ JAK
Sutikku (16:08, 26.05.17):
biznesmeni go nienawidzą
Nikas (15:31, 26.05.17):
Znalazł jeden prosty sposób jak zarabiać w internecie!!!!!
Sutikku (14:52, 26.05.17):
korzysta tu ktoś z przeglądarki vivaldi?
Fervi  (23:55, 25.05.17):
Społeczność jest dużo mniejsza
Fervi  (23:55, 25.05.17):
Powiedzmy, że potencjalnie reddit. Natomiast masz podział na tagi, więc możesz obserować te, które cię interesują
I am Lord (23:27, 25.05.17):
więc żaden reddit z tego
I am Lord (23:27, 25.05.17):
Te wpisy tam to w 95% jakieś pieprzenie o bitcoinach, spsobach na magiczne bogactwo nie ma nic normalnego :/
Fervi  (23:17, 25.05.17):
Oczywiście te 500zł to taka wartość hmm ... lekka. Są osoby, co zarobiły 16k na jednym poście, albo 1.5k w 2 tygodnie. Natomiast założyłem, że po prostu relanie z 500, może 1000zł / msc będzie
Fervi  (19:37, 25.05.17):
Możesz też wymieniać kryptowalutę z jednej na inną (poloniex)
I am Lord (19:28, 25.05.17):
w jaki sposób kryptowalutę się da wymieniać bo ja nie ogarniam
Fervi  (17:32, 25.05.17):
Każda chyba kryptowaluta jest wymianialna na złotówki. Nawet Dogecoin
Fervi  (17:32, 25.05.17):
Doge się nie wybił, a inne i owszem
Wojo (17:29, 25.05.17):
Tak jak np dogecoin
Wojo (17:28, 25.05.17):
Pomijając te moje śmieszne filozofie to rynek kryptowalut jest juz tak rozwinięty że kolejne kryptowaluty się nie wybijaja bo nie maja nic więcej do zaoferowania
Wojo (17:25, 25.05.17):
I to jest chujowa robota i to. Ale w jednej z nich jesteś w stanie odebrać wynagrodzenie
Wojo (17:22, 25.05.17):
A za pomoc przy osobach starszych dostajesz 2000euro (w realnej walucie). Serio smuci mnie to jak niektórzy kombinują jak koń pod górę zamiast najzwyczajniej w świecie zabrać się do roboty
Fervi  (17:18, 25.05.17):
Oczywiście mechanizm jest bardziej skomplikowany, ale to przykład
Fervi  (17:17, 25.05.17):
Dogecoin to po prostu kolejna waluta. I dobrze. Ale to tak jakbyś na stack overflow za pomoc użytkownikowi zamiast + dostał 10 centów (w kryptowalucie)
Fervi  (17:14, 25.05.17):
Akurat nie moja Od Dogecoin stoi o wiele wyżej. Natomiast może sukces osiągnąć z prostego powodu. To w zasadzie portal z walutą.
Wojo (17:12, 25.05.17):
Ale ta twoja waluta jest czymś pokroju dogecoina czyli czymś co sukcesu nie osiągnie
Fervi  (17:11, 25.05.17):
Masz już 4 kryptowaluty, co się wybiły całkiem nieźle (powyżej chyba 100 dolarów), może ciut więcej. Co prawda Steem nie należy do nich, natomiast na razie idzie go zdobyć dużo
Wojo (17:10, 25.05.17):
Dodatkowo bitcoin jest czymś co wcześniej było niespotykane a to jest jedno ze źródeł jego sukcesu
Wojo (17:09, 25.05.17):
Ale bitcoin to przypadek jeden na milion. Szansa że takj projekt wypali jest niewielka
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.01427 sekund ] [ Liczba zapytań MySQL: 16 ]

thecrims Otserv List Otserv LyricsTown Harry Potter Serwery Gier
dev nodev