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 159 dni temu
Beta
2026.100.0.1195 •
2026.100.0.1132
•
 GMRT beta 0.22.4

wydana  5 dni temu
= IDE, = Runtime, = GMRT
Użytkownicy online
1 użytkownik aktywny:
gości: 1,
(~ostatnie 15 minut)
Discord
41 użytkowników online na discordzie:
Miłosz, 🧁Cupcake🧁, MorDan, Alice, 21Lancz, Carl-bot, pABLO, h..., Fox, GibkiKaktus, s..., Sporek, fervi, r..., Threef, RogerDodg3r, Uzjel, Moldis, Kandif, Jarkozpl, yazaa, HappyOrange, Dyno, Deusald, szmalu, Korodzik, tomqz, Grela, Morro, Ulti, Skovv, Danieo, MrTesterr, Morti, 𝓐𝓷𝓪𝓼𝓽𝓪𝓼𝓲𝓪, l..., Borek, moeglich, g..., Add92, Shockah
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?