PHP 中的 RSA_sign 或 DSA_sign!

发布于 2024-07-26 06:44:42 字数 272 浏览 4 评论 0原文

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

请帮忙!

预先感谢所有回复!

I'm going to implement license key generator on my website but I've very few knowledges of php!
In my (Cocoa) application I've integrate a system verification that use the RSA_sign function (in C#) ... I would like to use the paypal IPN notification system to automatically generate and send to my users their license keys ... but I really don't know how to sign a string in php using an RSA key!!! In php I know only the openss_sign function but it isn't the same thing!
Or is better and easiest to use a DSA signing method???

Please, help!

Thanks in advance for all the replies!!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

往事风中埋 2024-08-02 06:44:43

您需要 openssl_sign()

编辑:

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

You want openssl_sign().

EDIT:

  • Make sure the message digest is the one you want to use to verify.
  • Don't test it by comparing the base64 output with another signature, test it by verifying the signature in your C# code. I believe it's possible for two valid signatures with the same key of the same data to have differing binary representations.
流星番茄 2024-08-02 06:44:43

谢谢你! 你是对的!

我发现问题出在我与 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”丢失了! 我有什么错吗?

Thank you! You are right!

I've found the problem, is in the hash string that I use with the openssl_sign!
I've this code in 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]);

and in php I've written:

$stringToEncrypt = "test";

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

The output of the first code is:

a94a8fe5ccb19ba61c4c873d391e987982fbbd3

The output of the second code is:

a94a8fe5ccb19ba61c4c0873d391e987982fbbd3

As you can see there is a '0' missed! What do I wrong?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文