RSA_sign o DSA_sign en PHP!
Pregunta
Voy a poner en práctica generador de claves de licencia en mi sitio web pero no tengo muy pocos conocimientos de PHP! En mi aplicación (Cacao) He integrar un sistema de verificación que utilizan la función RSA_sign (en C #) ... Me gustaría utilizar el sistema de notificación IPN paypal para generar automáticamente y enviar a mis usuarios de sus claves de licencia, pero ... realmente no sé cómo firmar una cadena en PHP usando una clave RSA !!! En php sólo conozco la función openss_sign pero no es lo mismo! ¿O es mejor y más fácil de usar un método DSA firma ???
Por favor, ayuda!
Gracias de antemano por todas las respuestas !!!
Solución
EDIT:
- Asegúrese de que el resumen del mensaje es el que desea utilizar para verificar.
- No probarlo comparando la salida base64 con otra firma, probarlo mediante la verificación de la firma en su código C #. Creo que es posible que dos firmas válidas con la misma clave de los mismos datos a tener diferentes representaciones binarias.
Otros consejos
Gracias! Tiene usted razón!
He encontrado el problema, se encuentra en la cadena de hash que yo uso con el openssl_sign! Tengo este código en Objective-C:
NSString *stringToEncript = @"test";
const char *clearText = [stringToEncript UTF8String];
unsigned char md[SHA_DIGEST_LENGTH];
SHA1((unsigned char *)clearText, strlen(clearText), md);
for(int i=0; i<SHA_DIGEST_LENGTH; i++)
printf("%x", md[i]);
y en php que he escrito:
$stringToEncrypt = "test";
$hash = sha1(utf8_encode($stringToEncrypt));
echo $hash;
La salida del primer código es:
a94a8fe5ccb19ba61c4c873d391e987982fbbd3
La salida del segundo código es:
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
Como se puede ver que hay un '0' perder! Qué hacer yo mal?