Encriptacion de cadenas con XOR
2005-12-29 23:54:00
// EncriptaXOR('esta es la frase de ejemplo','claveXXX') function EncriptaXOR(cadena,clave : string) : string; var i : integer; begin result:=''; for i:=1 to length(cadena) do result:=result+chr(ord(cadena[i]) xor ord(clave[(i mod length(clave))+1])); end;
La encriptacion con XOR es un clasico entre los clasicos... antes se usaba mucho, por ejemplo, en los virus para hacerlos mas dificiles de encontrar (¿os suena 'virus polimorficos'?). El XOR tiene la propiedad de que si le haces a un numero la operacion XOR dos veces con el mismo numero, obtienes de nuevo el primer numero...
A ver si lo se explicar:
23 xor 6 = 17
17 xor 6 = 23
Por eso no hace falta una rutina desencriptadora, con pasar dos veces la rutina de encriptacion con la misma clave obtienes la cadena original.
cadenaencriptada:=EncriptaXOR('mmm rosquillas','homer'); // mostrara la cadena 'mmm rosquillas' ShowMessage(EncriptaXOR(cadenaencriptada,'homer'));