代码之家  ›  专栏  ›  技术社区  ›  Mez

将base64的sha1哈希转换为十六进制哈希

  •  8
  • Mez  · 技术社区  · 15 年前

    我在MySQL中有一个使用

    $hash = '{SHA}' . base64_encode(sha1('some string here', true));
    

    我需要把这些转换成

    $hash = sha1('some string here');
    

    因为这些是我们的邮件系统使用的密码,我们希望转换为另一个邮件系统(但需要它是40个字符的十六进制散列:(

    我该如何从一种格式转换为另一种格式(我很确定我以前做过,但另一种方法,尽管我找不到代码!)

    作为一个注释,我提到了数据在MySQL中——这是不相关的——我知道如何获取数据,只是不转换它。

    散列值是相同的-我只想转换信息的打包方式(我认为这只需要从base64转换为base16,但这只是一个猜测!)

    2 回复  |  直到 15 年前
        1
  •  16
  •   ZZ Coder    15 年前
    $binary = base64_decode(substr($hash, 5));
    $hex = bin2hex($binary);
    
        2
  •  -3
  •   Your Common Sense    15 年前

    base64_decode() 可以在base64_编码手动输入中找到。
    我相信他们有办法在sha1手动输入注释中转换原始格式,如果你自己写太难的话。