在 PHP 中计算 SHA1 类似于 C 中的 CC_SHA1_Update

发布于 2024-10-20 17:18:14 字数 494 浏览 5 评论 0原文

我有一个 C 语言应用程序,它通过互联网将数据传输到 PHP 页面。我的哈希的 C 实现是:

    CC_SHA1_CTX ctx;
    CC_SHA1_Init(&ctx);
    CC_SHA1_Update(&ctx, ciph_right,20);
    CC_SHA1_Update(&ctx, _keyRight, 20);
    CC_SHA1_Final(digest, &ctx);

其中 ciph_right 和 _keyRight 只是长度为 20 的 2 个字节数组。如何为 PHP 实现类似的实现,以便获得相同的结果?

我在 PHP 中没有 CC_SHA1_Update 函数,我只有 sha1()。不幸的是,我不能 100% 确定 CC_SHA1_Update 的实际作用。我认为它只是将两个字节数组组合在一起+将它们的哈希值组合在一起,但事实似乎并非如此。

有人有什么想法吗?

谢谢!

So I have an application in C that is transmitting data over the internet to a PHP page. The C implementation for my hash is:

    CC_SHA1_CTX ctx;
    CC_SHA1_Init(&ctx);
    CC_SHA1_Update(&ctx, ciph_right,20);
    CC_SHA1_Update(&ctx, _keyRight, 20);
    CC_SHA1_Final(digest, &ctx);

Where ciph_right and _keyRight are simply 2 byte arrays of length 20. How can I achieve this similar implementation for PHP so I'm getting the same result?

I don't hav the CC_SHA1_Update function in PHP, I simply have sha1(). And unfortunately I'm not 100% certain what CC_SHA1_Update actually does. I thought it simply combined the two byte arrays + took a hash of them together, but this appears to not be the case.

Anyone have any ideas?

Thanks!

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

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

发布评论

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

评论(1

孤云独去闲 2024-10-27 17:18:14

sha1 函数采用完整的字符串并从该完整的字符串派生 SHA1 哈希值。

谷歌搜索表明,对 CC_SHA1_Update 的 C 调用只是添加更多要进行哈希处理的数据。

因此,您有两个选择。

  1. 只需将所有数据连接在一起,然后对其调用 sha1 即可。
  2. 在流模式下使用(标准)哈希扩展

$h = hash_init('sha1');
hash_update($h, 'some data');
hash_update($h, 'some more data');
$final_hash = hash_final($h);

然后,$final_hash 应包含 fa978155004254c23f9cf42918ad372038afcaf5,它恰好与字符串“some datasome more data”具有相同的哈希值。

The sha1 function takes a complete string and derives a SHA1 hash from that complete string.

A bit of Googling suggests that the C calls to CC_SHA1_Update are just adding more data to be hashed.

You therefore have two options.

  1. Just concatenate all the data together and then call sha1 on it.
  2. Use the (standard) hash extension in streaming mode:

.

$h = hash_init('sha1');
hash_update($h, 'some data');
hash_update($h, 'some more data');
$final_hash = hash_final($h);

$final_hash should then contain fa978155004254c23f9cf42918ad372038afcaf5, which happens to be the same hash as the string 'some datasome more data'.

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