Hola, hace poco hice una pregunta en el foro "Preguntas y respuestas" (http://www.comunidadgm.org/preguntas-y-respuestas/(solucionado)error-con-sistema-de-encriptacion/) donde tenía un error con mi código de encriptación. Gracias a jmbs19 logré solucionar el problema principal y se me ocurrió darle una pequeña (en verdad, muy pequeña xD) mejora para hacerle un poco (en verdad, muy poco) más complejo y extraño.
Al terminar mi script, recordé que muchos sistemas de encriptación tienen un nombre, como base64, sha1 (Secure Hash algorithm) y otros que obviamente tienen un nivel muy superior al mio, así que para no quedar tan abajo (?), le dí su propio nombre: "SEEA" (Siglas en inglés de: "Scrambled egg encryption algorithm", que significa "Algoritmo de cifrado del Huevo Revuelto").
Así que vamos allá:
Autor: NiuWeb (agradecimiento a jmbs19)
Versión de GM utilizada: GM:S 1.4.1657 (Debería funcionar en cualquier GM:S, pero más abajo seguro que no)
Descripción: Encripta o proteje una cadena de texto con una clave de encriptación para hacer ilegible su contenido. En realidad, el proceso de protección es una tontería, pero funciona aceptablemente
Códigos:
Ahora se viene lo importante, los códigos:
Primero, el código para encriptar:
[gml]
///seea_encode( str, key );
var str = argument0;
var key = argument1;
var kl = string_length(key);
if (kl mod 2) == 0
{
var m1 = string_copy(key,1,kl/2);
var m2 = string_copy(key,kl/2,kl/2);
key = m2 + m1;
}
else if (kl mod 2) == 1
{
var m1 = string_copy(key,1,1);
var m2 = string_copy(key,kl-1,1);
key += chr( max( ord(m1), ord(m2) ) - min( ord(m1), ord(m2) ) );
}
var result = "";
var char;
while string_length(str) > (string_length(key) + 1)
{
var rest = string_length(str) - string_length(key);
var falt = string_copy(key,1,rest);
key += falt;
}
for(i=1;i<=string_length(str);i++)
{
char = ((string_ord_at(str,i) + string_ord_at(str,i) - string_ord_at(key,i)));
result += chr(char);
}
return (result);
[/gml]
Y luego, el de desencriptar:
[gml]
///seea_decode( str, key );
var str = (argument0);
var key = argument1;
var kl = string_length(key);
if (kl mod 2) == 0
{
var m1 = string_copy(key,1,kl/2);
var m2 = string_copy(key,kl/2,kl/2);
key = m2 + m1;
}
else if (kl mod 2) == 1
{
var m1 = string_copy(key,1,1);
var m2 = string_copy(key,kl-1,1);
key += chr( max( ord(m1), ord(m2) ) - min( ord(m1), ord(m2) ) );
}
var result = "";
var char;
while string_length(str) > (string_length(key) + 1)
{
var rest = string_length(str) - string_length(key);
var falt = string_copy(key,1,rest);
key += falt;
}
for(i=1;i<=string_length(str);i++)
{
char = ((string_ord_at(str,i) - string_ord_at(str,i) + string_ord_at(key,i)));
result += chr(char);
}
return result;
[/gml]
Los argumentos de cada script son:
[gml]
seea_encode( str, key );
/*
donde str es la cadena a encriptar
y key es la clave para encriptar
*/
seea_decode( str, key );
/*
donde str es la cadena encriptada a desencriptar
y key es la clave que se usó para encriptar
*/
[/gml]
Espero le pueda ser de utilidad a alguien. :-[
No les pido créditos porque entre menos se sepa con qué tipo de protección guardas tu información, más seguro es XD
gracias por el aporte :B
no es justo, esta vez no viene ningúno de los "dioses" del foro a fastidiarle el script? :V
ya os vale xD
Cita de: kostra en Enero 22, 2016, 05:43:39 AM
no es justo, esta vez no viene ningúno de los "dioses" del foro a fastidiarle el script? :V
ya os vale xD
Yo he venido a molestar solo por este comentario.
Mira NiuWeb tu script tiene problemas por todos lados, para empezar por le nombre. ¿Porque huevo revuelo? por díos, pero que falta de creatividad, igual pudiste haber puesto algoritmo del espagueti enredado, o el de el pajaro mutilado. Te recomendaría deshumanizar el nombre de tu algoritmo y darle un nombre al termino común como NWEA(Niu Web Encryption Algorithm) para seguir la norma de los algoritmos monotonos con el nombre de su autor como RC4 o RSA. O quizá debiste seguir la norma de los algoritmos que llevan un nombre que intenta resumir la útilidad o el como funciona su algoritmo como el MD5 (Algoritmo de Resumen del Mensaje)
Siguiendo esa segunda norma yo le habría puesto NUEA acronimo de Not Useful Encryption Algorithm.
Para empezar que onda con eso de que la contraseña se invierte por la mitad si su medida es par, what? ¿para que? te parece muy divertido hacer que si la contraseña era "como" se cambie a "moco"? woow Seguridad!!!.
y esto como porque?
[gml]max( ord(m1), ord(m2) ) - min( ord(m1), ord(m2)[/gml]
Mejor así abs(m2-m1)...
[gml]while string_length(str) > (string_length(key) + 1)
{
var rest = string_length(str) - string_length(key);
var falt = string_copy(key,1,rest);
key += falt;
}
for(i=1;i<=string_length(str);i++)
{
char = ((string_ord_at(str,i) + string_ord_at(str,i) - string_ord_at(key,i)));
result += chr(char);
}
[/gml]
y todo eso, pues bien podría ser esto...
[gml]for(i=0;i<string_length(str); result += chr((string_ord_at(str, i+1)*2 - string_ord_at(key, 1+( ( i++) mod string_length(key) ) ))))
{
}[/gml]
Que ademas de ser corto y muy eficiente, cumple con el compromiso de parecer encriptado.
Ahora, ni hablar del script para desencriptar, o de que los caracteres se pasan del 255 o de la poca seguridad, en pocas palabras tu algoritmo está casi peor que mi huevo revuelto de esta mañana (y eso es decir mucho).
Suerte NiuWeb. (Estoy en mi tiempo de ocio y sé que no me sale lo de troll xp).
Lo sé, es una mierda ¬_¬ xDDD
Mejor trollea el nuevo que hice (spam spam spam spam xDDD) que es menos terrible que éste http://www.comunidadgm.org/desarrollo-de-scripts/sistema-de-encriptacion-2/
xDDD
PD1:
Cita de: brunoxzx en Abril 02, 2016, 07:40:02 AM
y esto como porque?
[gml]max( ord(m1), ord(m2) ) - min( ord(m1), ord(m2)[/gml]
Mejor así abs(m2-m1)...
Porque sí xd, así programo yo, se ve más pro y me gusta hacerlo así. No le veo nada de malo D': xDDD
Cita de: NiuWeb en Abril 02, 2016, 04:45:14 PM
Lo sé, es una mierda ¬_¬ xDDD
Mejor trollea el nuevo que hice (spam spam spam spam xDDD) que es menos terrible que éste
Yo diría que preferiría el que no dice explicitamente que hace mi texto 25 veces más grande... Lo leeré y si veo algo extraño te comento.
Cita de: NiuWeb en Abril 02, 2016, 04:45:14 PM
Porque sí xd, así programo yo, se ve más pro y me gusta hacerlo así. No le veo nada de malo D': xDDD
:-\