【问题标题】:Convert string to SHA1 and to base64将字符串转换为 SHA1 和 base64
【发布时间】:2015-01-08 10:43:05
【问题描述】:

我在转换字符串时遇到问题,可以说:“TestPassword”到 SHA1 和 base64。

一般根据那个网站: http://www.online-convert.com/result/1f76972748a7d186198171e9a11e9493

对于上述密码,我应该得到以下结果:

hex: 6250625b226df62870ae23af8d3fac0760d71588
HEX: 6250625B226DF62870AE23AF8D3FAC0760D71588
h:e:x: 62:50:62:5b:22:6d:f6:28:70:ae:23:af:8d:3f:ac:07:60:d7:15:88
base64: YlBiWyJt9ihwriOvjT+sB2DXFYg=  <-- That is what I would like to achieve ...

将字符串转换为 SHA1 没有问题,但我不知道如何将其再次转换为 base64,因为需要将每两个字符视为一个十六进制字节,然后将其传递给 base64 函数。

有人能说明一下或者粘贴代码sn-p怎么做吗?

谢谢!

【问题讨论】:

  • 不是很清楚你在问什么。究竟是什么问题?
  • 不知道如何将SHA1转base64得到上述结果
  • 请记住,不再建议将 SHA1 用于密码散列。如果可以,请改用password_hash
  • @John 你可以通过实际包含你已经拥有的代码来避免投票。
  • 我知道,但在这种特殊情况下我无法做到。

标签: php


【解决方案1】:

Base64 编码应该在 SHA1 摘要的原始二进制版本上执行,而不是它的十六进制编码。

您可以通过将true 传递给sha1() 函数的$raw_output 参数来获取该原始版本:

$base64 = base64_encode(sha1("TestPassword", true));

【讨论】:

    【解决方案2】:

    我认为这是一个较晚的响应,但我通过使用原始 md5 然后将其转换为 base64 实现了该确切值:

    $base64 = base64_encode(hash("md5", "myPassword", true));
    

    【讨论】:

      【解决方案3】:

      您好,请在终端中运行此命令,

      echo 6250625B226DF62870AE23AF8D3FAC0760D71588 | xxd -r -p | openssl base64
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-02
        • 2021-12-12
        • 1970-01-01
        • 1970-01-01
        • 2016-08-11
        • 2014-05-10
        • 2017-07-28
        • 2014-03-14
        相关资源
        最近更新 更多