Criptare şi decriptare în JavaScript


E un fapt clar: codurile JavaScript sunt foarte utile în paginile web, dar şi foarte uşor de furat. Aceasta pentru că se execută pe calculatorul internautului (deci te uiţi în sursă şi vezi), nu pe server cum se întâmplă în cazul codului scris în PHP. Există desigur căi de a face mai dificilă sarcina celui ce vrea să fure. Cum? Codificând… dar nu uitaţi că modul de codificare poate fi citit deci doar se îngreunează procesul. Eu de exemplu am avut nevoie ca un anume text să nu fie clar citibil în sursa paginii (sau chiar şi „prins” în timpul execuţiei) şi atunci am folosit funcţiile de mai jos, care nu îmi aparţin. A mers de minune. Studiaţi codul în acţiune de aici şi vedeţi şi sursa. Daţi refresh: altă codare de fiecare dată, dar decodarea e tot perfectă de fiecare dată. Nu a clacat nici la diacritice.

function Encrypt(theText) {
	output = new String;
	Temp = new Array();
	Temp2 = new Array();
	TextSize = theText.length;
	for (i = 0; i < TextSize; i++) {
		rnd = Math.round(Math.random() * 122) + 68;
		Temp[i] = theText.charCodeAt(i) + rnd;
		Temp2[i] = rnd;
	}
	for (i = 0; i < TextSize; i++)
		output += String.fromCharCode(Temp[i], Temp2[i]);
	return output;
}

function unEncrypt(theText) {
	output = new String;
	Temp = new Array();
	Temp2 = new Array();
	TextSize = theText.length;
	for (i = 0; i < TextSize; i++) {
		Temp[i] = theText.charCodeAt(i);
		Temp2[i] = theText.charCodeAt(i + 1);
	}
	for (i = 0; i < TextSize; i = i+2)
		output += String.fromCharCode(Temp[i] - Temp2[i]);
	return output;
}

Dacă vorbim despre cod, sunt iarăşi soluţii online precum Obfuscator.ro. Ştiţi cum arată prima funcţie „aiurită” cu Obfuscator.ro? Cine are chef să o buchisească?

eval(function(p,a,c,k,e,r){e=function(c){return c.toString(a)};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k1||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k1)p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k1);return p}('e d(a){1=2 9;3=2 7();4=2 7();5=a.c;8(i=0;i<5;i++){6=b.f(b.g()*h)+j;3[i]=a.k(i)+6;4[i]=6}8(i=0;i<5;i++)1+=9.l(3[i],4[i]);m 1}',23,23,'|output|new|Temp|Temp2|TextSize|rnd|Array|for|String||Math|length|Encrypt|function|round|random|122||68|charCodeAt|fromCharCode|return'.split('|'),0,{}))

Evident, mă repet şi insist: nu sunt metode imbatabile ci doar suficiente ca utilizatorului de rând, ba chiar şi celui cât de cât tehnic, să îi piară cheful de uitat prin sursă.


Apreciază articolul:

1 stea2 stea3 stea4 stea5 stea (2 evaluări, media: 5,00 din 5)
Loading...Loading...

0 comentarii


Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *