PHP中的RSA_sign或DSA_sign!

时间:2009-07-12 08:53:00

标签: licensing paypal rsa

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

请帮忙!

提前感谢所有回复!!!

2 个答案:

答案 0 :(得分:0)

你想要openssl_sign()

修改

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

答案 1 :(得分: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'!我错了什么?