Semplice metodo per criptare o decriptare una stringa

Tutorial, videotutorials ed esempi creati da noi
Rispondi
Avatar utente
Kimera_V2
Membro
Messaggi: 118
Iscritto il: 27/06/2013, 14:11
Uso: GM:Studio 1.4 Pro
Località: CPU
Contatta:

Semplice metodo per criptare o decriptare una stringa

Messaggio da Kimera_V2 »

Con questo esempio sarà possibile criptare/decriptare una stringa tramite una chiave.
Per criptare basterà usare il seguente script Encript in questo modo:

Codice: Seleziona tutto

string_cript=Encript(key,stringa)
Spoiler

Codice: Seleziona tutto

chiave=argument0;
parola=argument1;
pos_chiave=0;
p_cript='';
l_chiave=string_length(chiave);
l_parola=string_length(parola);
list_chiave=ds_list_create();
list_parola=ds_list_create();
build_pc=string_insert('',p_cript,0);

for (i=0;i<l_chiave;i+=1)
{
let_chiave=string_copy(chiave,i+1,1);
ds_list_add(list_chiave,let_chiave);
}
for (i=0;i<l_parola;i+=1)
{
let_parola=string_copy(parola,i+1,1);
ds_list_add(list_parola,let_parola);
}
llc=ds_list_size(list_chiave);
llp=ds_list_size(list_parola);
lla=ds_list_size(global.alfabeto);
for (i=0;i<llp;i+=1)
{
lc=ds_list_find_value(list_chiave,pos_chiave);
lp=ds_list_find_value(list_parola,i);
ind_c=ds_list_find_index(global.alfabeto,lc);
ind_p=ds_list_find_index(global.alfabeto,lp);
ind_pc=ind_c+ind_p;
if ind_pc>(lla-1){ind_pc=(ind_c+ind_p)-(lla)}
pos_chiave+=1;
if pos_chiave>=llc{pos_chiave=0;}
pc=ds_list_find_value(global.alfa_cript,ind_pc);
build_pc=string_insert(pc,build_pc,i*3);
}
ds_list_destroy(list_chiave);
ds_list_destroy(list_parola);
return build_pc;
Per decriptare basterà usare il seguente script Decript in questo modo:

Codice: Seleziona tutto

stringa=Decript(key,string_cript)
Spoiler

Codice: Seleziona tutto

chiave=argument0;
p_cript=argument1;
pos_chiave=0;
p_decript='';
l_chiave=string_length(chiave);
l_cript=string_length(p_cript);
list_chiave=ds_list_create();
list_cript=ds_list_create();
build_pc=string_insert('',p_decript,0);

for (i=0;i<l_chiave;i+=1)
{
let_chiave=string_copy(chiave,i+1,1);
ds_list_add(list_chiave,let_chiave);
}
for (i=0;i<l_cript/2;i+=1)
{
let_cript=string_copy(p_cript,(i*2)+1,2);
ds_list_add(list_cript,let_cript);
}
llc=ds_list_size(list_chiave);
llcp=ds_list_size(list_cript);
k=ds_list_size(global.alfabeto);

for (i=0;i<llcp;i+=1)
{
a_val=ds_list_find_value(list_chiave,pos_chiave);
c_val=ds_list_find_value(list_cript,i);
a=ds_list_find_index(global.alfabeto,a_val);
c=ds_list_find_index(global.alfa_cript,c_val);
b=c-a;
if b<0{b=(c+k)-a}
pos_chiave+=1;
if pos_chiave>=llc{pos_chiave=0;}
b_val=ds_list_find_value(global.alfabeto,b);
build_pc=string_insert(b_val,build_pc,i+1);
}
ds_list_destroy(list_chiave);
ds_list_destroy(list_cript);
return build_pc;
Script per creare il proprio alfabeto criptato e decriptato da dichiarare prima dell'utilizzo dei due script.
Per creare l'afabeto basterà usare il seguente script cosi:

Codice: Seleziona tutto

crea_alfabeto()
Spoiler

Codice: Seleziona tutto

global.alfabeto=ds_list_create();
global.alfa_cript=ds_list_create();
alf[0]='A'
alf[1]='B'
alf[2]='C'
alf[3]='D'
alf[4]='E'
alf[5]='F'
alf[6]='G'
alf[7]='H'
alf[8]='I'
alf[9]='L'
alf[10]='M'
alf[11]='N'
alf[12]='O'
alf[13]='P'
alf[14]='Q'
alf[15]='R'
alf[16]='S'
alf[17]='T'
alf[18]='U'
alf[19]='V'
alf[20]='Z'
alf[21]='X'
alf[22]='Y'
alf[23]='K'
alf[24]='W'
alf[25]='J'
alf[26]='a'
alf[27]='b'
alf[28]='c'
alf[29]='d'
alf[30]='e'
alf[31]='f'
alf[32]='g'
alf[33]='h'
alf[34]='i'
alf[35]='l'
alf[36]='m'
alf[37]='n'
alf[38]='o'
alf[39]='p'
alf[40]='q'
alf[41]='r'
alf[42]='s'
alf[43]='t'
alf[44]='u'
alf[45]='v'
alf[46]='z'
alf[47]='x'
alf[48]='y'
alf[49]='k'
alf[50]='w'
alf[51]='j'
alf[52]='0'
alf[53]='1'
alf[54]='2'
alf[55]='3'
alf[56]='4'
alf[57]='5'
alf[58]='6'
alf[59]='7'
alf[60]='8'
alf[61]='9'

alf_c[0]='00'
alf_c[1]='01'
alf_c[2]='02'
alf_c[3]='03'
alf_c[4]='04'
alf_c[5]='05'
alf_c[6]='06'
alf_c[7]='07'
alf_c[8]='08'
alf_c[9]='09'
alf_c[10]='0A'
alf_c[11]='0B'
alf_c[12]='0C'
alf_c[13]='0D'
alf_c[14]='0E'
alf_c[15]='0F'
alf_c[16]='A0'
alf_c[17]='A1'
alf_c[18]='A2'
alf_c[19]='A3'
alf_c[20]='A4'
alf_c[21]='A5'
alf_c[22]='A6'
alf_c[23]='A7'
alf_c[24]='A8'
alf_c[25]='A9'
alf_c[26]='10'
alf_c[27]='11'
alf_c[28]='12'
alf_c[29]='13'
alf_c[30]='14'
alf_c[31]='15'
alf_c[32]='16'
alf_c[33]='17'
alf_c[34]='18'
alf_c[35]='19'
alf_c[36]='1A'
alf_c[37]='1B'
alf_c[38]='1C'
alf_c[39]='1D'
alf_c[40]='1E'
alf_c[41]='1F'
alf_c[42]='B0'
alf_c[43]='B1'
alf_c[44]='B2'
alf_c[45]='B3'
alf_c[46]='B4'
alf_c[47]='B5'
alf_c[48]='B6'
alf_c[49]='B7'
alf_c[50]='B8'
alf_c[51]='B9'
alf_c[52]='F0'
alf_c[53]='F1'
alf_c[54]='F2'
alf_c[55]='F3'
alf_c[56]='F4'
alf_c[57]='F5'
alf_c[58]='F6'
alf_c[59]='F7'
alf_c[60]='F8'
alf_c[61]='F9'

for(i=0;i<62;i+=1)
{
ds_list_add(global.alfabeto,alf[i])
ds_list_add(global.alfa_cript,alf_c[i])
}
Spoiler
E' possibile usarlo anche su GM Studio.

Avatar utente
Xxshark888xX
Membro d'elite
Messaggi: 1497
Iscritto il: 30/05/2012, 19:17
Specialità: Un poco di tutto
Uso: GM:Studio 1.4 Pro
Località: Earth
Contatta:

Re: Semplice metodo per criptare o decriptare una stringa

Messaggio da Xxshark888xX »

Attenzione a che tipo di dati si va a criptare utilizzando questo semplice script.

Se non sono dati sensibili, va anche "bene" altrimenti consiglio di cercare di implementare AES o altri algoritmi testati e ufficialmente dichiarati sicuri.
Contatti
Steam
Facebook

Gif
Spoiler
Immagine
Immagine
Immagine
Immagine

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti