1

我将在我的网站上实现许可证密钥生成器,但我对 php 的了解很少!在我的(Cocoa)应用程序中,我集成了一个使用 RSA_sign 函数(在 C# 中)的系统验证......我想使用 paypal IPN 通知系统自动生成并向我的用户发送他们的许可证密钥......但是我真的不知道如何使用 RSA 密钥在 php 中对字符串进行签名!!!在 php 中,我只知道 openss_sign 函数,但它不是一回事!还是更好、更容易使用 DSA 签名方法???

请帮忙!

先谢谢大家的回复!!!

4

2 回答 2

0

你想要openssl_sign()

编辑:

  • 确保消息摘要是您要用于验证的消息摘要。
  • 不要通过将 base64 输出与另一个签名进行比较来测试它,而是通过验证 C# 代码中的签名来测试它。我相信具有相同数据的相同密钥的两个有效签名可能具有不同的二进制表示。
于 2009-07-12T09:07:02.420 回答
0

谢谢!你说的对!

我发现问题出在我与 openssl_sign 一起使用的哈希字符串中!我在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]);

在php中我写过:

$stringToEncrypt = "test";

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

第一个代码的输出是:

a94a8fe5ccb19ba61c4c873d391e987982fbbd3

第二个代码的输出是:

a94a8fe5ccb19ba61c4c0873d391e987982fbbd3

如您所见,漏掉了一个“0”!我错了什么?

于 2009-07-12T10:17:49.157 回答