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
1 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 1, userów: 0, ukrytych: 0
Użytkownicy na czacie discord
gnysek (15:16, 9.07.20):
Nowy manual do GMS manual.yoyogames.com
gnysek (11:26, 3.07.20):
Nie, Kinga ma bledszą cerę i mniej zdrową.
nowy_user (10:51, 3.07.20):
No, Kasia teraz już się trochę postarzała, pewnie teraz celujesz w Kingę Dudę Podobny typ urody. Choć jak jej tata dowie się, że swego czasu głosowałeś na Tuska, to zabroni Wam się spotykać
gnysek (0:15, 3.07.20):
Zdecydowanie bardziej Kasia
gnysek (0:14, 3.07.20):
To bylo jakieś zdjecie ze szkoły, w wiecej osób, nic szalonego.
nowy_user (11:16, 2.07.20):
Ja to jestem bardziej zainteresowany tym zdjęciem Gnyska z plakatem Martyny Wojciechowskiej. Zawsze myślałem, że Gnysek podbijał do młodej i niewinnej Kasi Tusk, a to jednak dojrzała i niezależna kobieta zawróciła mu w głowie. Ciekawe...
gnysek (0:44, 2.07.20):
Hm, obawiam się, że kiedyś sporo rzeczy leciało nieodwracalnie do kosza i sporo kontrowersyjnych tematów i postaci zniknęło bez śladu. Dziś sam bym to poczytał.
Korodzik (20:25, 1.07.20):
A gdzie to się działo w ogóle? Na forum, w shoutboxie? Bym se poczytał i się pośmiał
gnysek (11:22, 1.07.20):
No co Ty, wystarczyła weryfikacja IP, GMCLAN akurat zawsze je zapisywał.
nowy_user (10:50, 1.07.20):
Pamiętam to, i moim zdaniem zbyt szybko oskarżyliśmy Elvisa o podszywanie się bez dostatecznych dowodów. Jak na moje to mógł być Mark Overmars we własnej osobie. W tamtym okresie GMClan przeżywał swoje lata świetności i to było całkiem prawdopodobne, że takie osobistości nas odwiedzały.
Korodzik (10:39, 1.07.20):
Mnie ciekawi ta historia o użytkowniku podszywającym się pod Overmarsa...
Korodzik (10:27, 1.07.20):
27
adam014 (6:41, 1.07.20):
27
gnysek (0:26, 1.07.20):
28/59.
Adriann (21:21, 30.06.20):
Trudne cholerstwo Twój wynik: 16/59
nowy_user (21:03, 30.06.20):
Przyznawać się, ile punktów zdobyliście. U mnie 53/59.
nowy_user (21:00, 30.06.20):
Hej chłopaki! Znalazłem coś świetnego! Test ze znajomości Gmclanu. Jeszcze z dawnych czasów: funtest.pl/test/gmclan
Adriann (22:56, 26.06.20):
Ja odpaliłem alee zrobił mi się burdel w projekcie więc uznałem że przetestuję nieco później;p
Threef (17:08, 26.06.20):
Ficzerki są fajne, ale nie do istniejących projektów ani projektów "na godzinkę". Trzeba zacząć coś większego by skorzystać
nowy_user (15:46, 26.06.20):
Każdy się boi tych nowych ficzerów Chłopaki z YoYo zarywali nocki, pracowali ponad siły, żeby nam tylko dogodzić, a teraz nikt z tego nie korzysta...
gnysek (15:06, 26.06.20):
Nadal nic ?
SimianVirus7 (19:19, 22.06.20):
Zainstalowałem ale jeszcze nie sprawdziłem. Jak dla mnie jest dużo nowych opcji i to trzeba usiąść w niedziele na spokojnie
gnysek (10:24, 22.06.20):
Sprawdziliście już 2.3 ?
SimianVirus7 (18:25, 17.06.20):
Szampan wylewa się...
nowy_user (16:06, 9.06.20):
W takim razie zaczynam chłodzić szampana.
gnysek (13:33, 9.06.20):
Publiczna beta GMS 2.3 powinna ruszyć dziś, bo jakiś update kont leci.
gnysek (1:29, 30.05.20):
Gdyby szefem był overmars, to by się nazywało GameMaker 12 teraz
gnysek (1:28, 30.05.20):
Przecież russell ma gówno do powiedzenia. Playtech tym rządzi.
nowy_user (13:28, 29.05.20):
Gdyby szefem dalej był Mark Overmars, to pewnie zgodziłby się, to był idealista. Russel to inna sprawa, ma żonę, dzieci, rachunki do opłacenia. Nie ma szans, że obniży cenę, nawet jakby ludzie zagrozili zniszczeniem kopii Lemingów na jego oczach.
gnysek (1:44, 29.05.20):
Jaka zadyma, stary temat ktoś odświeżył i na gównie się zna.
SimianVirus7 (17:50, 28.05.20):
Ja mam zamiar kupić export na androida, fajnie jakby też jakaś promocja z tego wynikła
nowy_user (17:15, 28.05.20):
Na forum YoYo zadyma, sfrustrowani użytkownicy strajkują i żądają obniżenia cen licencji na konsole. Poszła już nawet petycja w tej sprawie, a niektórzy grożą zainstalowaniem Unity!
SimianVirus7 (21:26, 24.05.20):
GMS 2 Line Counter
SimianVirus7 (21:26, 24.05.20):
Dobra, Dzięki Threef, poszukałem i jest jakaś alternatywa do gms2
SimianVirus7 (21:18, 24.05.20):
szukam i chyba chodzi Ci o GMLPal
Threef (21:16, 24.05.20):
Do GMS1 był zewnętrzny program który podawał statystyki
SimianVirus7 (11:54, 24.05.20):
Można gdzieś zobaczyć podsumowanie ile linijek kodu jest napisane w całym projekcie? Wydaje mi się, że w gms1 gdzieś taka opcja była, a w gms2?
gnysek (13:15, 21.05.20):
Ranma kolejny raz robi na mnie cesję domeny i kolejny raz qpa
nowy_user (15:17, 11.05.20):
Jakieś jeszcze są, ale raczej mniej spektakularne. Żadnych znajomych twarzy nie dostrzegłem. Jakiś mecz w ping ponga w biurze.. czy inne mniej ciekawe rzeczy.
gnysek (11:19, 11.05.20):
Jeszcze jakieś są ?
nowy_user (21:16, 10.05.20):
Nie no, tak serio to Allie wrzucała różne filmiki z YoYo House na Discorda
nowy_user (20:50, 10.05.20):
Mam swoje źródła ;-) Przy okazji, czy pomylił Cię ktoś kiedyś na ulicy z Sebastianem Vettelem? Wyglądacie bardzo podobnie.
gnysek (23:27, 9.05.20):
Wow, skąd to masz
nowy_user (17:32, 8.05.20):
Ok, w takim razie wrzucam : www.youtube.com...h?v=p2X8VJjphY4
gnysek (14:33, 8.05.20):
Na tym jest tylko mieszkanie, nas nie ma: www.youtube.com...h?v=3Fonyl0gQWY
gnysek (14:29, 8.05.20):
Pewnie po pijaku
gnysek (14:28, 8.05.20):
Eeee, dawaj ten film
nowy_user (20:42, 7.05.20):
Filmu nie chcę wrzucać bez Twojej zgody (chociaż uspokajam - nie ma tam gorszących scen ;d tylko kulturalne śniadanko . Zazdroszczę przygody, musiałeś poznać wielu dzisiejszych GM'owych wyjadaczy.
nowy_user (20:40, 7.05.20):
Chyba tak, można się natknąć na jakieś filmiki na YT z yoyo house. Na jednym z nich Ty nawet występujesz w głównej roli co ciekawe na tym samym filmie jest też Nocturne, gwiazda wielkiej rangi na gmc ( dla tych, którzy nie odwiedzają gmc - Nocturne to gość o reputacji mniej więcej takiej, jaką u nas ma Tymon).
gnysek (14:25, 7.05.20):
Mają je jeszcze? Ten w którym ja mieszkałem, należał do Mike'a.
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-2020. GMCLAN.ORG
Wszelkie prawa zastrzeżone. Kopiowanie materiałów bez zgody redakcji zabronione!
© 2002-2017 Ranmus (ranmus.pl), © 2017-2020 {=|=} fable_inside();

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