Вопрос

Я собираюсь внедрить генератор лицензионных ключей на своем веб-сайте, но у меня очень мало знаний о PHP!В моем приложении (Cocoa) я интегрировал проверку системы, использующую функцию RSA_sign (на C#)...Я хотел бы использовать систему уведомлений PayPal IPN для автоматического создания и отправки моим пользователям лицензионных ключей...но я действительно не знаю, как подписать строку в php с помощью ключа RSA!!!В php я знаю только функцию openss_sign, но это не одно и то же!Или лучше и проще использовать метод подписи DSA???

Пожалуйста помоги!

Заранее спасибо за все ответы!!!

Это было полезно?

Решение

Вы хотите openssl_sign().

РЕДАКТИРОВАТЬ:

  • Убедитесь, что дайджест сообщения — это тот, который вы хотите использовать для проверки.
  • Не проверяйте его, сравнивая вывод base64 с другой подписью, проверяйте его, проверяя подпись в коде C#.Я считаю, что две действительные подписи с одним и тем же ключом одних и тех же данных могут иметь разные двоичные представления.

Другие советы

Спасибо!Ты прав!

Я обнаружил проблему в хэш-строке, которую я использую с openssl_sign!У меня есть этот код в Object-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]);

и в php я написал:

$stringToEncrypt = "test";

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

Вывод первого кода:

a94a8fe5ccb19ba61c4c873d391e987982fbbd3

Вывод второго кода:

a94a8fe5ccb19ba61c4c0873d391e987982fbbd3

Как видите, пропущен «0»!Что я делаю не так?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top