【问题标题】:Converting sha1 to sha256将 sha1 转换为 sha256
【发布时间】:2019-09-18 06:34:31
【问题描述】:

我有一个生成 openssl sha256 密钥的 .sh 文件

$(echo -n ${DATA} | openssl sha256 -binary | base64)

并且需要生成相同的密钥以将其与在我的 php 文件中使用 sha256 进行比较,旧的密钥是 sha1。 这是我现在的 php 代码,它输出精细的 sha1 字符串。

$params['Code'] = base64_encode(sha1($params['Product'] . $params['Model'] . $params['Number'],true));

我将 sha1 更改为 sha256,但出现内部服务器错误。

【问题讨论】:

  • “需要生成相同的密钥”是什么意思? sha1 和 sha256 会生成不同的哈希值。此外,没有任何sha256() 功能。使用hash('sha256', $theValueToHash)
  • 对不起,我的意思是 .sh 文件生成的相同密钥。现在 sha1 与 .sh 文件不同。
  • 然后将您的sha1()-function 更改为第一条评论中建议的函数,看看是否效果更好。
  • 谢谢,这是我的问题,我不知道如何,就像说我只是用sha256更改了sha1,显然不正确。因此寻求帮助。
  • 对于未来,您需要在发布之前进行一些适当的研究。如果你用谷歌搜索类似:"php sha256",你会比写问题更快地找到答案。

标签: php binary sha256


【解决方案1】:

看来你想用这个:

$data = $params['Product'] . $params['Model'] . $params['Number'];
$params['Code'] = base64_encode(hash('sha256', $data, true));

但鉴于 Magnus Eriksson 的第一条评论,我也不明白为什么这很难得出。

请注意,我们无法验证这是否会产生与您期望的相同的输出。

【讨论】:

  • 谢谢。我会试试看。我已经阅读了 php 手册参考。 Magnus Eriksson 在此处询问之前表示,但失败了。我向他道歉。
  • 没问题。魔鬼总是在细节中。万一我的代码不适合你,并且你想报告它,不要只说:“它失败了”,要非常具体,比如:“我给了它这个字符串(字符串的副本)并期望这个结果,字符串(再次复制它),出于这些原因(命名它们),但我得到了这个(这里相同)。”。我们越能了解您的具体问题,就越能为您提供帮助。
  • 它似乎输出了预期的长度,虽然该值与 .sh 不匹配,但这不是这个线程的问题,我将打开一个新的以了解我缺少什么.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-04
  • 2011-10-21
  • 2013-07-08
  • 2016-06-02
  • 1970-01-01
  • 1970-01-01
  • 2014-09-25
相关资源
最近更新 更多