Ten artykuł został stworzony dla starszych wersji GameMakera i może nie być aktualny.

Szyfrowanie danych

Sobota, 11 Czerwca 2005, 19:07
Czas czytania 1 minuta, 42 sekundy
Zgodne z GM: gm5 gm6 gm7 gm8
Gdy potrzebujesz zaszyfrować dane aby np. zapisać je do pliku, tak aby użytkownik nie mógł ich odczytać - przeczytaj ten artykuł.
Na początku tworzymy nową grę.
Robimy pierwszy skrypt, i nazywamy go zaszyfruj.
Wpisujemy w nim:
kodtext=argument0;
len=string_length(text);
szyfr='';
for(i=1; i<len+1; i+=1)
{
szyfr+=string(ord(string_char_at(text,i)))
+'x'+string(100+round(random(99)))
+'$';
}
return szyfr;
Teraz tworzymy drugi skrypt i nazywamy go odszyfruj.
kodtext=argument0;
pos=0;
len=string_count('$',text);//zamień to $ przy zamianie innych!
szyfr='';
for (i=1; i<len+1; i+=1;)
{
pos=string_pos('x',text);
szyfr+=chr(real(string_copy(text,1,pos-1)) );
/*pos - 1 -> pobiera text do pozycji o 1 mniejszej
od pozycji znaku 'x' */

len2=string_length(text);
pos=string_pos('$',text);
text=string_delete(text,1,pos);
/*pos - 1 -> kasuje text z pozycja znaku '$' */
}
return szyfr;

Teraz stwórz obiekt i daj mu w create kod:
kodtxt='tekst do zaszyfrowania';
txt2=zaszyfruj(txt);
txt3=odszyfruj(txt2);

a teraz w draw:
koddraw_text(0,0,txt2);
draw_text(0,16,txt3);

Możesz uruchomić program.
Na ekranie ukaże się niemieszczący się w ekranie napis:
696x187$606x142$642x155$690x141$696x165$192x130$600x185$666x161$
192x104$732x105$582x157$690x131$732x192$726x145$612x102$684x132$
666x177$714x197$582x130$660x142$630x174$582x160$
Jest to nasza zaszyfrowana wiadomość.

Teraz napewno nikt tego nie odkoduje. No chyba, że widział ten artykuł, dlatego teraz wytłumaczę jak dodatkowo zabezpieczyć.

W pętli FOR pobieramy kolejne litery. Przetwarzamy je na ASCII, potem dodajemy znak x losową liczbę z zakresu 100-199 i znak $, który oznacza koniec danego znaku. Aby utrudnić komuś zadanie, możemy napisać:
kodszyfr+=string(ord(string_char_at(text,i))*5)wtedy każdy znak będzie mnożony przez 5. Mozna wpisać tutaj dowolną liczbę, lub działanie (wtedy umieść je w nawiasach). Należy wtedy jeszcze w odszyfrowywaniu dodać:
kodszyfr+=chr(real(string_copy(text,1,pos-1))/5);aby liczba przed odszysfrowaniem została podzielona przez to przez co wcześniej ją mnożono.

Jeżeli wykorzystacie skrypt w swojej grze, napiszcie o mnie w creditsach.
Komentarze (łącznie 15):
gnysek (Sob., 11 Cze. 05, 19:15)
#1

Oczywiście, to jest jedna z łatwiejszych form szyfrowania, skrypt po pięciu minutach przeróbki zamienia liczby na litery i wtedy szansa odszyfrowania spada drastycznie.

Tymon (Sob., 11 Cze. 05, 19:41)
#2

Super :D Ale i tak ja bym zrobił to inaczej :D

b
bigshark (Sob., 11 Cze. 05, 21:11)
#3

nom nom fajne, ja bym to zrobił inaczej niz gnysek i jeszcze bardziej inaczej niz tymon ale fajne to jest i tak

Ranma_man (Nie., 12 Cze. 05, 09:45)
#4

No to podajcie swoje pomysły. :) Algorytmów kodowania jest bez liku. Uważam, że do niewielkiego typu danych kodowanie w GML jest całkiem dobrym rozwiązaniem. Natomiast przy bardzo dużych danych to chyba lepiej skorzystać z jakiegoś dll'a co by GM'a nie zabić. ;P

dziadekkleofas (Nie., 12 Cze. 05, 10:08)
#5

Najlepiej skompresować plik swoim własnym kompreserem ;p. Nikt oprócz ciebie nie rozpakuje tak więc nie rozszyfruje.

Tymon (Nie., 12 Cze. 05, 10:55)
#6

Ranma, przecież to by sie prawie na tym samym opierało. Tylko że ja to bym chciał zrobić na pojedyńczych znakach. Czyli np. literze P będzie odpowiadać S ;)

Marmot (Nie., 12 Cze. 05, 13:10)
#7

A czemu tak Tymon? Nie lepiej zastosować ROT-13? Pełno jest DLLi do tego, a algorytm jak nawet jest dość prosty do niego.

Ranma_man (Nie., 12 Cze. 05, 13:30)
#8

Tymon: Oczywiscie, ze by sie na tym samym opieralo, ale tu chodzi o SZYBKOSC gml'a.

FIREMARK (Nie., 12 Cze. 05, 19:50)
#9

lol :P
dobre to,przyda sie w pewnej mojej grze :P

Pietrus_paN (Sob., 25 Cze. 05, 16:05)
#10

Fajniutka sprawa :O :D :P :] :)

a
~anomymous (śro., 11 Sty. 06, 15:28)
#11

zrobiłem to co mówisz ale gra uruchamia się normalnie
:-(

BP Ultimate (Czw., 12 Sty. 06, 07:06)
#12

Przecież to jest artykuł na szyfrowanie, to co to ma wspólnego z odpalaniem gry?

kubasz (Pią., 04 Sty. 08, 16:02)
#13

Bo ja chyba zrobię trudne działanie matematyczne!!!
np. szyfr+=string(ord(string_char_at(text,i))*9+30-1)

Y
Yoda (Sob., 05 Sty. 08, 00:00)
#14

O ja ale trudne działanie - ja nie moge... O_O

a
adam014 (Sob., 05 Sty. 08, 12:18)
#15

@Yoda
Trudne czy nie trudne,ale jak by nie napisał to byś nie wiedział jakie i z rozszyfrowania nici :P

Najnowsze wersje GameMakera:

LTS
2026.0.0.16 • 2022.0.3.99
wydana 164 dni temu
Beta
2026.100.0.1199 •
2026.100.0.1133
•
 GMRT beta 0.22.4

wydana  3 dni temu
= IDE, = Runtime, = GMRT
Użytkownicy online
1 użytkownik aktywny:
gości: 1,
(~ostatnie 15 minut)
Discord
50 użytkowników online na discordzie:
Miłosz, 🧁Cupcake🧁, MorDan, Nikas, Alice, LeD, Nitro Slav, 21Lancz, Carl-bot, pABLO, h..., Fox, GibkiKaktus, s..., lethian, Sporek, Jiří Černín, Kuzyn, GMRussell, Tidżi, 𝕳𝖚𝖌𝖔 𝕲𝖔𝖓𝖝𝖆𝖑𝖊𝖝, Radek Ignatów, PhysX ᴺⱽᴵᴰᴵᴬ, r..., Threef, Uzjel, Moldis, Kandif, Jarkozpl, yazaa, HappyOrange, szmalu, Korodzik, Grela, draczek, OdrzuconyKrakers, Dyno, bagno, antek, Arrekin, MrTesterr, GreenClover, Morti, l..., Cebul, Borek, Add92, Krzysiek1250, Shockah, Nero
Shoutbox
gnysek (23:36, 02.11.26)
Zniknęła, stara wersja nie powinna byc dostepna. Chociaz widziałem, ze został przełącznik na górze w zębatce obok avatara, moje przeoczenie :D
Borek (20:47, 02.11.26)
Gdzie jest opcja, żeby wstąpić do bety GMCLAN? bo nigdzie nie widzę.
gnysek (11:10, 01.11.26)
teraz też wyróżnia nowe wpisy od ostatniej wizyty ;)
Borek (18:45, 31.10.26)
No, już jest lepiej :) Dalej retro, ale użyteczne :D To mi się podoba :)
gnysek (12:36, 31.10.26)
Ok, teraz jak wpiszesz więcej tekstu, to się po prostu automatycznie powiększa ;) I poprawiłem CSS dla tips/warns w artykułach i newsach na ciemnym motywie, tak porządnie. I teraz zapamiętuje "przeczytane" komentarze między przeglądarkami.
Adriann (15:31, 29.10.26)
Tak, rozumiem używanie ai jako narzędzia ale nie w ten sposób że nie widać w tym pracy człowieka :o
Borek (15:13, 26.10.26)
Nie narzekam na ruch (sam napisałem, że przynajmniej jakiś ruch jest), ale martwi mnie jakość "gier", które nagle zaczynają się pojawiać z dupy. "Catch the clown" przynajmniej był stworzony przez człowieka, tak samo jak opis na forum :)
Wojo (11:49, 26.10.26)
Nie ma ruchu - narzekacie, jest ruch - narzekacie. Nie są to gry z najwyższej półki, ale każdy robi tak jak potrafi. Za starych gmclanowych czasów było wiele produkcji amatorskiej jakości, ale dzięki temu forum tętniło życiem.
Borek (16:08, 25.10.26)
Chodzi mi o ten INPUT, jedna linia, ciężko się tutaj pizse :) Ja wiem, że retro, ale trochę QoL nie zaszkodzi :D
gnysek (16:00, 25.10.26)
A co jest nienormalnego? :D Jest takie jak zawsze było, pełne retro ;) Zerknę, w następny weekend planuję lekki update strony. 3 wpisy to nie tragedia, ale jak będzie wiecej AI slopu to pewnie zacznę kasować.
Starsze wpisy znajdziesz w Archiwum.
Ankieta
Czy udostępnienie źródła GMRT dla każdego i brak opłat za licencje jest dobrym krokiem?