【发布时间】: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