Foros del Web » Programando para Internet » PHP »

Generacion MD5 y comparación de las mismas

Estas en el tema de Generacion MD5 y comparación de las mismas en el foro de PHP en Foros del Web. Buenas noches, Tengo 2 dudas en este momento tengo un sitio que me envía una información con unas variables: Aqui les dejo un ejemplo. Código ...
  #1 (permalink)  
Antiguo 24/04/2012, 21:56
Avatar de Avasquez  
Fecha de Ingreso: marzo-2012
Mensajes: 35
Antigüedad: 12 años, 7 meses
Puntos: 1
Pregunta Generacion MD5 y comparación de las mismas

Buenas noches,

Tengo 2 dudas en este momento tengo un sitio que me envía una información con unas variables:

Aqui les dejo un ejemplo.

Código PHP:
<?php
$llave_encripcion 
"1111111111111111";
$usuarioId=2;
$refVenta=0001;
$valor=116000;
$estado_pol = ['estado_pol']
$baseDevolucionIva=100000;
$iva=16000;
$moneda=COP;
$descripcion "Pruebas de Generacion de Firmas";
$firma=  "llaveEncripcion~usuarioId~refVenta~valor~moneda~estado_pol"
$firma_codificada md5($firma);
?>
Y yo los capturo ejemplo:

Código:
<?php
$usuarioId = $_POST['usuarioIdl'];
?>
Con estos datos yo necesito validar que la llave $firma_codificada si sea lo que me están mandando, es decir que yo capturo las variables creo la firma y comparo ambos MD5 a ver si son iguales.

Código:
$firma= "llaveEncripcion~usuarioId~refVenta~valor~moneda~estado_pol"
$firma_codificada = md5($firma);
Pero creo que no me funsiona ya que ellos dicen que el MD5 la mandan en mayuscula como hago para yo generar la mia en mayuscula?
Cual seria el codigo correcto para comparar ambas MD5 (firmas)

Gracias de antemano
  #2 (permalink)  
Antiguo 25/04/2012, 00:57
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: Generacion MD5 y comparación de las mismas

Pero creo que no me funsiona ya que ellos dicen que el MD5 la mandan en mayuscula como hago para yo generar la mia en mayuscula?
Cual seria el codigo correcto para comparar ambas MD5 (firmas)

Aclara primero de qué están hablando. Para pasar un string a mayúsculas puedes usar upper() pero no creo que se refieran a eso. Por último, los strings se pueden comparar con === o cualquier función de la flia. str*.
Saludos
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 25/04/2012, 09:48
Avatar de Avasquez  
Fecha de Ingreso: marzo-2012
Mensajes: 35
Antigüedad: 12 años, 7 meses
Puntos: 1
Pregunta Respuesta: Generacion MD5 y comparación de las mismas

Gracias, por al respuesta.

Adjunto el codigo que estoy usando.

Código PHP:
# Comprueba que la firma de la transacción sea correcta
$llave_encripcion $GATEWAY['llave_encripcion'];
$usuarioId $GATEWAY['usuarioId'];
$refVenta $GATEWAY['invoiceid'];
$valor $GATEWAY['valor'];
$moneda $GATEWAY['moneda'];
$estado_pol $GATEWAY['estado_pol'];
$sql "SELECT total FROM tblinvoices WHERE id='$invoiceid'";
$res mysql_query($sql) or die("ERR3");
list(
$valor) = mysql_fetch_array($res);
$firma_cadena "$llave_encripcion~$usuarioId~$refVenta~$valor~$moneda~$estado_pol";
$firmaold md5($firma_cadena);
if(
$firmaold != $_POST['firma']) {
        
logTransaction($GATEWAY["pagosonline"],$_POST,"Unsuccessful (ERR4)");
        die(
"ERR4");


Lo que intento es comparar ambas firmas, las que yo creo con las variables que tengo en el $GATEWAY y las que me envian.

Lo que necesito es que la MD5 sean iguales y sigue su proceso. Pero me dicen que ellos envian eso en Mayuscula. "7931708308485F83C894E1C6F898AB20"

Como hago para que la que yo genero sea en mayuscula.

Adicional me gustaría saber si esta bien desarrollado el codigo
  #4 (permalink)  
Antiguo 26/04/2012, 01:19
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: Generacion MD5 y comparación de las mismas

La unica comparación que tienes aquí es :

if($firmaold != $_POST['firma'])

Si esto te devuelve false simplemente comprueba las dos variables.
La función md5 encripta de una sóla manera.
Saludos
__________________
Fere libenter homines, id quod volunt, credunt.
  #5 (permalink)  
Antiguo 26/04/2012, 11:46
Avatar de Avasquez  
Fecha de Ingreso: marzo-2012
Mensajes: 35
Antigüedad: 12 años, 7 meses
Puntos: 1
Exclamación Respuesta: Generacion MD5 y comparación de las mismas

Bueno explico mejor,

Estoy creado un script en el cual recibo unos datos por medio de _POST

Capturo las variables en método POST con el siguiente codigo

Código PHP:
<?php
$variable 
$_POST['dato'];
?>
Cuando capturo todos los datos creo una variable $firma donde concateno todos los mismos y los encripto en MD5

Código PHP:
$firma=  "llaveEncripcion~usuarioId~refVenta~valor~moneda~estado_pol" 
$firma_codificada md5($firma); 
Ejemplo con datos capturados.
Código PHP:
$firmaold=  "1111111111111111~2~anvar-1~116000.00~COP~4" 
$firma_codificada md5($firmaold); 
El resultado en MD5 seria el siguiente:

Código:
356c8c1cdf2c8fd1663cacb1f6c894b8
Ahora lo que hago es comparar la firma enviada por el otro sitio web en metodo _POST y la que la que he creado con la otra variable

Código PHP:
if($firma_codificada != $_POST['firma']) { 
        
logTransaction($GATEWAY["pagosonline"],$_POST,"Unsuccessful (ERR4)"); 
        die(
"ERR4"); 
Pero la firma enviada por ello es con lso mismo datos pero el MD5 es el siguiente:
Código:
356C8C1CDF2C8FD1663CACB1F6C894B8

¿Teóricamente no es la misma firma porque la mia esta minúscula y la que recibo en _POST esta en mayúscula?
¿Como seria el código para la comparación y para que sea lo mismo en minúscula/mayuscula?
¿tengo todo el código errado?
  #6 (permalink)  
Antiguo 26/04/2012, 20:24
Avatar de Avasquez  
Fecha de Ingreso: marzo-2012
Mensajes: 35
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Generacion MD5 y comparación de las mismas

Ya lo solucione muchas gracias, convirtiendo mi llave en mayuscula osea un strig a mayuscula asi

Código PHP:
$firma "8D1CEA674CD300FA82D464A7202DC30A";
$firma_cadena "1111111111111111~2~61~116000.00~COP~4";
$firma_house md5($firma_cadena);
$firma strtolower($firma);

if(
$firma_house==$firma) {
       print 
"<p>Las firmas son iguales.</p>";
}

if(
$firma_house!=$firma) {
       print 
"<p>Las firmas son diferentes.</p>";


Etiquetas: md5, variables, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:46.