首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将php 5.2 mhash代码更改为php5.3 hash

如何将php 5.2 mhash代码更改为php5.3 hash
EN

Stack Overflow用户
提问于 2012-05-13 22:55:59
回答 3查看 3.8K关注 0票数 1

朋友们,我的php 5.2代码是这样保存我的密码的

代码语言:javascript
复制
echo '<br>'.base64_encode(mhash(MHASH_MD5,'test'));
result  CY9rzUYh03PK3k6DJie09g==

在php 5.3中,mhash扩展已经被Hash取代了,就像我在文档中看到的那样。所以我试着这样做。但它给出了错误的结果。

代码语言:javascript
复制
echo '<br>'.base64_encode(hash(MD5,'test'));
result MDk4ZjZiY2Q0NjIxZDM3M2NhZGU0ZTgzMjYyN2I0ZjY=

请帮我把我的5.2 mhash代码转换成5.3。

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-13 22:59:45

实际上,它们是相同的,只是格式不同。第一个是二进制数据,第二个是十六进制数据。您可以使用以下函数将第一个转换为第二个:

代码语言:javascript
复制
$second_hash = bin2hex ($first_hash);

或者反过来:

代码语言:javascript
复制
$first_hash = hex2bin ($second_hash);

更新

添加此函数:

代码语言:javascript
复制
define('HEX2BIN_WS', " \t\n\r");

function hex2bin($hex_string) {
    $pos = 0;
    $result = '';
    while ($pos < strlen($hex_string)) {
      if (strpos(HEX2BIN_WS, $hex_string{$pos}) !== FALSE) {
        $pos++;
      } else {
        $code = hexdec(substr($hex_string, $pos, 2));
        $pos = $pos + 2;
        $result .= chr($code); 
      }
    }
    return $result;
}
票数 3
EN

Stack Overflow用户

发布于 2014-10-14 21:24:55

如果您想使用sha1将过时mhash()方法更新为hash_hmac()方法,只需替换:

代码语言:javascript
复制
mhash(MHASH_SHA1, $data, $key)

转到

代码语言:javascript
复制
hash_hmac('sha1', $data,$key,true)

在我的上下文中,我面对的是一段古老的代码

代码语言:javascript
复制
base64_encode(mhash(MHASH_SHA1, $data, $key));

我将其替换为

代码语言:javascript
复制
base64_encode(hash_hmac('sha1', $data,$key,true));

我希望它能有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2013-09-02 23:34:48

代码语言:javascript
复制
mhash(MHASH_MD5, 'FOOBAR'); // what you have
pack('H*', hash(MD5, 'FOOBAR')) // what you accepted
pack('H*', md5('FOOBAR')); // ...
md5('FOOBAR', true); // what you could/should have used

我知道这个问题有点老了,但今天我也遇到了同样的问题。基于这篇文章,我找到了一种更短、更高效的方式,在我看来,这是值得分享的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10572699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档