Pergunta

Vou implementar o gerador de chaves de licença no meu site, mas tenho muito poucos conhecimentos do PHP! No meu aplicativo (cacau), integra uma verificação do sistema que usa a função RSA_SIGN (em C#) ... gostaria de usar o sistema de notificação do PayPal IPN para gerar e enviar automaticamente aos meus usuários suas chaves de licença ... mas Eu realmente não sei como assinar uma string no PHP usando uma chave RSA !!! No PHP, sei apenas a função OpenSS_Sign, mas não é a mesma coisa! Ou é melhor e mais fácil usar um método de assinatura da DSA ???

Por favor ajude!

Agradecemos antecipadamente por todas as respostas !!!

Foi útil?

Solução

Você quer OpenSSL_Sign ().

EDITAR:

  • Verifique se o resumo da mensagem é o que você deseja usar para verificar.
  • Não teste -o comparando a saída BASE64 com outra assinatura, teste -a verificando a assinatura no seu código C#. Acredito que seja possível para duas assinaturas válidas com a mesma chave dos mesmos dados para ter diferentes representações binárias.

Outras dicas

Obrigada! Você está certo!

Eu encontrei o problema, está na string hash que eu uso com o OpenSSL_Sign! Eu tenho esse código no 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]);

E no PHP que escrevi:

$stringToEncrypt = "test";

$hash = sha1(utf8_encode($stringToEncrypt));
echo $hash;

A saída do primeiro código é:

A94A8FE5CCB19BA61C4C873D391E987982FBBD3

A saída do segundo código é:

A94A8FE5CCB19BA61C4C0873D391E987982FBBD3

Como você pode ver, há um '0' perdido! O que eu estou errado?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top