Tema: password???
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 15/02/2004, 15:09
Avatar de derkenuke
derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 2 meses
Puntos: 45
No se si esto puede servirte, postee en las faq un codigo para cifrar contraseñas, un metodo por el que solo se pueden codificar, y no hay manera de descodificarlas. Se llama md5, igual lo conoces. Su codigo aplicado a js seria este:

Código PHP:
/*
 * [B][U][COLOR=red](entre / y * no puede haber nada, ahi daba un error)[/COLOR][/U]  [/B]  
 * md5.js
 *
 * A JavaScript implementation derived from the RSA Data Security, Inc. MD5
 * Message-Digest Algorithm.
 * Copyright (C) Paul Johnston 1999 - 2000. Distributed under the LGPL.
*/

/* to convert strings to a list of ascii values */
var sAscii " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ"
var sAscii sAscii "[\]^_`abcdefghijklmnopqrstuvwxyz{|}~";

/* convert integer to hex string */
var sHex "0123456789ABCDEF";
function 
hex(i)
{
  
"";
  for(
0<= 3j++)
  {
    
+= sHex.charAt((>> (4)) & 0x0F) +
         
sHex.charAt((>> (8)) & 0x0F);
  }
  return 
h;
}

/* add, handling overflows correctly */
function add(xy)
{
  return ((
x&0x7FFFFFFF) + (y&0x7FFFFFFF)) ^ (x&0x80000000) ^ (y&0x80000000);
}

/* MD5 rounds functions */
function R1(ABCDXST)
{
  
add(add(A, (C) | ((~B) & D)), add(XT));
  return 
add((<< S) | (>>> (32 S)), B);
}

function 
R2(ABCDXST)
{
  
add(add(A, (D) | (& (~D))), add(XT));
  return 
add((<< S) | (>>> (32 S)), B);
}

function 
R3(ABCDXST)
{
  
add(add(AD), add(XT));
  return 
add((<< S) | (>>> (32 S)), B);
}

function 
R4(ABCDXST)
{
  
add(add(A^ (| (~D))), add(XT));
  return 
add((<< S) | (>>> (32 S)), B);
}

/* main entry point */
function calcMD5(sInp) {

  
/* Calculate length in machine words, including padding */
  
wLen = (((sInp.length 8) >> 6) + 1) << 4;
  var 
= new Array(wLen);

  
/* Convert string to array of words */
  
4;
  for (
0; (4) < sInp.lengthi++)
  {
    
X[i] = 0;
    for (
0; (4) && ((4) < sInp.length); j++)
    {
      
X[i] += (sAscii.indexOf(sInp.charAt((4) + j)) + 32) << (8);
    }
  }

  
/* Append padding bits and length */
  
if (== 4)
  {
    
X[i++] = 0x80;
  }
  else
  {
    
X[1] += 0x80 << (8);
  }
  for(; 
wLeni++) { X[i] = 0; }
  
X[wLen 2] = sInp.length 8;

  
/* hard coded initial values */
  
0x67452301;
  
0xefcdab89;
  
0x98badcfe;
  
0x10325476;

  
/* Process each 16 word block in turn */
  
for (0wLen+= 16) {
    
aO a;
    
bO b;
    
cO c;
    dO = 
d;

    
R1(abcdX[i0], 0xd76aa478);
    
R1(dabcX[i1], 120xe8c7b756);
    
R1(cdabX[i2], 170x242070db);
    
R1(bcdaX[i3], 220xc1bdceee);
    
R1(abcdX[i4], 0xf57c0faf);
    
R1(dabcX[i5], 120x4787c62a);
    
R1(cdabX[i6], 170xa8304613);
    
R1(bcdaX[i7], 220xfd469501);
    
R1(abcdX[i8], 0x698098d8);
    
R1(dabcX[i9], 120x8b44f7af);
    
R1(cdabX[i+10], 170xffff5bb1);
    
R1(bcdaX[i+11], 220x895cd7be);
    
R1(abcdX[i+12], 0x6b901122);
    
R1(dabcX[i+13], 120xfd987193);
    
R1(cdabX[i+14], 170xa679438e);
    
R1(bcdaX[i+15], 220x49b40821);

    
R2(abcdX[i1], 0xf61e2562);
    
R2(dabcX[i6], 0xc040b340);
    
R2(cdabX[i+11], 140x265e5a51);
    
R2(bcdaX[i0], 200xe9b6c7aa);
    
R2(abcdX[i5], 0xd62f105d);
    
R2(dabcX[i+10], ,  0x2441453);
    
R2(cdabX[i+15], 140xd8a1e681);
    
R2(bcdaX[i4], 200xe7d3fbc8);
    
R2(abcdX[i9], 0x21e1cde6);
    
R2(dabcX[i+14], 0xc33707d6);
    
R2(cdabX[i3], 140xf4d50d87);
    
R2(bcdaX[i8], 200x455a14ed);
    
R2(abcdX[i+13], 0xa9e3e905);
    
R2(dabcX[i2], 0xfcefa3f8);
    
R2(cdabX[i7], 140x676f02d9);
    
R2(bcdaX[i+12], 200x8d2a4c8a);

    
R3(abcdX[i5], 0xfffa3942);
    
R3(dabcX[i8], 110x8771f681);
    
R3(cdabX[i+11], 160x6d9d6122);
    
R3(bcdaX[i+14], 230xfde5380c);
    
R3(abcdX[i1], 0xa4beea44);
    
R3(dabcX[i4], 110x4bdecfa9);
    
R3(cdabX[i7], 160xf6bb4b60);
    
R3(bcdaX[i+10], 230xbebfbc70);
    
R3(abcdX[i+13], 0x289b7ec6);
    
R3(dabcX[i0], 110xeaa127fa);
    
R3(cdabX[i3], 160xd4ef3085);
    
R3(bcdaX[i6], 23,  0x4881d05);
    
R3(abcdX[i9], 0xd9d4d039);
    
R3(dabcX[i+12], 110xe6db99e5);
    
R3(cdabX[i+15], 160x1fa27cf8);
    
R3(bcdaX[i2], 230xc4ac5665);

    
R4(abcdX[i0], 0xf4292244);
    
R4(dabcX[i7], 100x432aff97);
    
R4(cdabX[i+14], 150xab9423a7);
    
R4(bcdaX[i5], 210xfc93a039);
    
R4(abcdX[i+12], 0x655b59c3);
    
R4(dabcX[i3], 100x8f0ccc92);
    
R4(cdabX[i+10], 150xffeff47d);
    
R4(bcdaX[i1], 210x85845dd1);
    
R4(abcdX[i8], 0x6fa87e4f);
    
R4(dabcX[i+15], 100xfe2ce6e0);
    
R4(cdabX[i6], 150xa3014314);
    
R4(bcdaX[i+13], 210x4e0811a1);
    
R4(abcdX[i4], 0xf7537e82);
    
R4(dabcX[i+11], 100xbd3af235);
    
R4(cdabX[i2], 150x2ad7d2bb);
    
R4(bcdaX[i9], 210xeb86d391);

    
add(aaO);
    
add(bbO);
    
add(ccO);
    
add(d, dO);
  }
  return 
hex(a) + hex(b) + hex(c) + hex(d);


Te convendría meterlo todo en un *.js para no liarte. La unica funcion que tienes que utilizar es calcMD5("aki.el.pass"); Todo esto lo unico que devuelve es un codigo hexadecimal, de 32 caracteres, metas lo que metas.

La cuestion seria codificar manualmente tu contraseña, por ejemplo la que propones "92s3j77e", seria "FC3F35B28936EFFAE005FBD1A04E997A". Entonces pones tu codigo evaluando una condicion:

Código PHP:

<script LANGUAGE="JavaScript">
function 
Entrar(password) {
  if(
calcMD5(password)=="FC3F35B28936EFFAE005FBD1A04E997A"pagina=password+".htm";
  else 
pagina="error.htm";
  
window.location=pagina;
}

</script> 
Con eso en tu script no esta la contraseña (los creadores de la codificacion md5 dicen que es imposible sacar la descodificacion, unicamente por fuerza bruta), y tampoco la pagina de destino. Solo habria una posibilidad de entrar, poniendo la contraseña correcta que solo la sabrías tu, la que codificaste a mano.


A mi juicio es una solucion muy buena y profesional


Un saludo y espero que te sirva !
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.

Última edición por derkenuke; 16/02/2004 a las 08:55