Buenas tardes, busqué y busqué y no logré encontrar nada. Por eso, hoy en mi primer tema les pido su ayuda. Les describo mi problema:
En PHP hice un encriptador que (valga la redundancia), encripta una contraseña, cuando la uso localmente (localhost en IIS) funciona correctamente pero al subir la aplicación al sitio web que está en Apache, ésta función falla dándome otros caracteres.
Les cuento:
///////////////Primer parte
La encriptación se hace de la siguiente manera, recibo a través de $_POST la contraseña la cual, la separo caracter a caracter. Después cada caracter lo paso a ASCII, después cada valor ASCII de cada caracter lo paso a binario y finalmente concateno los caracteres convertidos a binario.
////////////Segunda parte
La cadena de caracteres ahora es 000101010111010110010101010 (por dar un ejemplo), ésta si es menor a 80 la agrego 00000000000. Entonces quedaría 0000000000000000000000101010111010110010101010 (tomando en cuenta que son 80 caracteres).
Ahora mi cadena es 0000000000000000000000101010111010110010101010, ésta la separo de 8 en 8 y la paso a hexadecimal con una función que hice.
Este es la última parte del código que convierte el binario (de 8 en 8) a hexadecimal:
Código PHP:
for ($a = 0; $a <= 9; $a++){
$cadena_8bits = substr($clave_encryptada, $a*8, 8);
$valor_hex = bin_to_hex($cadena_8bits);
$clave_encryptada_hex = $clave_encryptada_hex.$valor_hex;
}
//Y aquí muestro la conversión ya concatenada.
$clave_pwd = strtoupper($clave_encryptada_hex);
La función bin_to_hex es la siguiente:
Código PHP:
function bin_to_hex($hex){
switch ($hex) {
case "00000000":
echo "00";
break;
case "00000001":
echo "01";
break;
case "00000010":
echo "02";
break;
case "00000011":
echo "03";
break;
case "00000100":
echo "04";
break;
//Continua... pero Foros del web no me dejó ponerla completa.
}
}
Esto es lo que resulta en cada servidor al convertir la palabra "admin":
Apache: 5D7B5DD36DDCD6CF9AB8
IIS: 5D1A5DB76DD0B2CBF3B8
Espero puedan ayudarme y que no se hayan quedado dormidos con el tema tan largo