【问题标题】:duplicating the md5 raw_output flag (raw bytes) in PHP 5 with Ruby's md5使用 Ruby 的 md5 复制 PHP 5 中的 md5 raw_output 标志(原始字节)
【发布时间】:2011-01-02 08:37:17
【问题描述】:

由于一个荒谬的 SOAP 身份验证方案,我需要使用其他一些参数对 API 密钥进行 md5 哈希处理。不幸的是,提供的唯一示例代码是用 PHP 编写的,由于我觉得不可思议的原因,它要求 md5 散列使用 PHP 中的可选 raw_output 标志(http://php.net/manual/en/function.md5.php),这会导致它返回二进制(然后我必须对其进行 base64 编码)。

我的应用程序是用 Ruby 编写的,如果不需要的话,我不想将此部分推迟到 PHP 文件中。但是,我似乎不知道如何让 Ruby 以二进制形式返回哈希值。当我在 PHP 中正常散列它时,输出与我的 Ruby 输出匹配,但这不是他们要求的。

PHP:

<?php
  $encode = "test";
  echo md5($encode); // 098f6bcd4621d373cade4e832627b4f6
  echo "\n";
  // PHP5 - md5 with raw_output flag set to true - what I need to mimic in Ruby
  echo md5($encode, true); // binary that looks something like: ?k?F!?s??N?&'??
  echo "\n";
?>

鲁比:

require 'digest/md5'
encode = "test"
puts Digest::MD5.hexdigest(encode) # 098f6bcd4621d373cade4e832627b4f6

感谢任何帮助。

【问题讨论】:

    标签: php ruby encryption hash


    【解决方案1】:

    只需使用digest 而不是hexdigest

    puts Digest::MD5.digest(encode) 
    

    【讨论】:

    • 谢谢布赖恩,天哪,我不知道为什么我很难弄清楚这一点!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    • 2014-11-18
    • 1970-01-01
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多