Comunidad Game Maker

Ayuda => Desarrollo de Scripts => Mensaje iniciado por: kostra en Abril 16, 2022, 10:09:32 PM

Título: mega64 (easy encriptado de strings)
Publicado por: kostra en Abril 16, 2022, 10:09:32 PM
NOTA IMPORTANTE!!! No se flipen con el tamaño de la password (no es necesario) pk peta con stack overflow!! (me acabo de dar cuenta xd)

Nombre del creador: Kostrón Sobakón
Breve descripción de su función: Encripta una string con apariencia de base64 pero cuando alguien trate de decodificarlo verá que no conseguirá nada aunque lo decodifique varias veces en cadena, pues pa eso está la "password" c:
Versión GM utilizada: GMS2.. pero meh, seguro sirve para todos o casi todos los GM
CódigoS (son 2, el encoder y el decoder):
[gml]
#region mega64_encode
   function mega64_encode(_string,_password) {
      var _str = _string;
      for (var i = 0; i < string_length(_password); ++i) {
         _str = string_char_at(_password,i+1)+base64_encode(_str);
      }
      db(_str)
      return _str;
   }
#endregion
#region mega64_decode
   function mega64_decode(_mega64_string,_password) {
      var _str = _mega64_string;
      var _reversed_pass = "";
      for (var i = 0; i < string_length(_password); ++i) {
         _reversed_pass += string_char_at(_str,0);
         _str = string_copy( _str,2,string_length(_str)-1 );
         _str = base64_decode(_str);
      }
         
      var _pass = "";
      for (var i = 0; i < string_length(_reversed_pass); ++i) {
         _pass += string_char_at( _reversed_pass,string_length(_reversed_pass)-i );
      }
         
      if (_password == _pass) { return _str; }
      else { return false; }
   }
#endregion
[/gml]

Adaptaciones a los antiguos scripts...
[gml]
///mega64_encode(string,password)

var _string = argument[0];
var _password = argument[1];
var _str = _string;
for (var i = 0; i < string_length(_password); ++i) {
   _str = string_char_at(_password,i+1)+base64_encode(_str);
}
db(_str)
return _str;
[/gml]
[gml]
///mega64_decode(mega64_string,password)

var _mega64_string = argument[0];
var _password = argument[1];
var _str = _mega64_string;
var _reversed_pass = "";
for (var i = 0; i < string_length(_password); ++i) {
   _reversed_pass += string_char_at(_str,0);
   _str = string_copy( _str,2,string_length(_str)-1 );
   _str = base64_decode(_str);
}
         
var _pass = "";
for (var i = 0; i < string_length(_reversed_pass); ++i) {
   _pass += string_char_at( _reversed_pass,string_length(_reversed_pass)-i );
}
         
if (_password == _pass) { return _str; }
else { return false; }
[/gml]

Supongo que no hace falta explicar su uso a detalle... se usa igual que el base64 pero con una pasword que tú te inventes.. poniendo siempre la misma que uses al encriptar.. para desencriptar, que si no la lías parda!! D:
Sé que se podría aprovechar mejor la pass, pero lo hice rápido, si alguna vez lo actualizo avisaré. Se aceptan sugerencias (otra cosa es que haga caso xD)
Título: Re: mega64 (easy encriptado de strings)
Publicado por: Danth en Julio 02, 2022, 08:16:33 PM
vaya, justo acabo de terminar de terminar de leer un documento en donde se explica el uso del base64 en gm, y estaba en plan.....
nmms eso lo puede desencriptar cualquier vato xd.

funciona perfecto, pero una duda, para qué sirve esa "función" db()
en gms1 pone error, igual la puse como comentario y el script funciona como debe. (o almenos a mi me funciona como en teoría debería funcionar (? )

wen aporte u.u
Título: Re: mega64 (easy encriptado de strings)
Publicado por: Johann en Julio 04, 2022, 12:48:53 AM
Esa función db es una función de debug propiade él, seguro se le olvidó borrarla XD