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:

Stabilna
2024.14.0.207 • 2024.14.0.251
wydana  4 dni temu
LTS
2022.0.3.85 • 2022.0.3.99
wydana 335 dni temu
Beta
2024.1400.0.911 •
2024.1400.0.899
 0.18.0

wydana 12 dni temu
= IDE, = Runtime, = GMRT
Użytkownicy online
1 użytkownik aktywny:
gości: 1,
(~ostatnie 15 minut)
Discord
36 użytkowników online na discordzie:
Miłosz, 🧁Cupcake🧁, Alice, Nitro Slav, Carl-bot, Saus, pABLO, Fox, p..., Wielki Druid, Kuzyn, GMRussell, Threef, HappyOrange, Arrekin, yazaa, Destiny, Dyno, szmalu, sgames, Kandif, sutikku, Danieo, bagno, antek, Tidżi, Mtax, g..., Huder, s..., l..., moeglich, Add92, Krzysiek1250, h..., Shockah
Shoutbox
gnysek (16:01, 16.10.25)
To już google decyduje. Mam wrażenie, ze po datach obcina stare treści.
S
Sutikku (10:42, 14.10.25)
Ja jeszcze trafiam na fora jak szukam konkretnych haseł (chociażby wczoraj zepsuty pendrive który się identyfikuje jako Phison 2307 Boot ROM). Teraz projekty opensource często mają społeczności na discordzie i tam jest tona przydatnych informacji ale niedostępna poza discordem. Fajnie by to było wyeksponować
Korodzik (04:24, 14.10.25)
A w sumie to forum się normalnie indeksuje w wyszukiwarkach? Bo ja stwierdziłem, że np. w Google ciężko znaleźć cokolwiek z gmclanowego forum. Większość tematów jest chyba nieindeksowana od dawna...
S
Sutikku (08:44, 13.10.25)
mam niedokończony projekt bota, którego dodaje się do discorda, a on synchronizuje wiadomości z discorda -> na readonly forum. Wtedy treści mogą być indeksowane z wyszukiwarek i łatwo dostępne bez logowania. No ale leży w czyśćcu i czeka.
Wojo (11:52, 11.10.25)
Może kiedyś powróci moda na fora internetowe. Pamiętam w sumie, że czasami aktywność rosła i malała, ale tak pusto to chyba jeszcze nigdy nie było i myślę, że ta cała migracja użytkowników jest zasługą Discorda i zmiany czasów. Po prostu lata dwudzieste spowodowały zmiany trendów w internecie
S
Sutikku (09:06, 08.10.25)
najwyższa pora zopensourcować kod gmclanu!
gnysek (10:33, 06.10.25)
Może tak zrobię :D Jak znajdę czas :D
I am Lord (10:49, 01.10.25)
Tutaj powinna być na głównej jakaś wielka informacja o tym że na Discordzie teraz wszystko jest
Wojo (20:34, 17.07.25)
Discordy i Facebooki pogrzebały erę forów internetowych...
gnysek (10:36, 04.07.25)
Bo wszyscy piszą na discordzie :)
Starsze wpisy znajdziesz w Archiwum.
Ankieta
Ile zarobiłeś do tej pory na grach stworzonych w GM?