简体   繁体   English

node.js和PHP之间的SHA1哈希差异

[英]SHA1 hash differences between node.js and PHP

I would like to convert this part of node.js code to PHP code. 我想将node.js代码的这一部分转换为PHP代码。 (WORKING) (工作)

function generateHashedPass (password, salt) {
    var byteSalt = new Buffer(salt, 'base64');
    var bytePass = new Buffer(password, 'ucs2');
    var byteResult = Buffer.concat([byteSalt, bytePass]);
    return sha1.update(byteResult).digest('base64');
}

console.log(generateHashedPass('111111', 'UY68RQZT14QPgSsfaw/F+w==') === 'L0xc787MxCwJJaZjFX6MqxkVcFE=' ? "Algo correct" : "Algo wrong" );

For now i have something like this in php : (NOT WORKING) 现在我在php中有这样的东西:( 不工作)

public function getHashedPass($pass, $salt) {
    $base_salt = unpack('H*', base64_decode($salt));     
    $base_pass = unpack('H*', mb_convert_encoding($pass, 'UCS-2', 'auto'));
    $base_result = $base_salt[1] . $base_pass[1];
    return base64_encode(sha1($base_result));
}

But the result is not the same as the node.js function. 但结果与node.js函数不同。

The result should be this : L0xc787MxCwJJaZjFX6MqxkVcFE= 结果应为: L0xc787MxCwJJaZjFX6MqxkVcFE =

When password is : 111111 密码为: 111111

And salt is : UY68RQZT14QPgSsfaw/F+w== 盐是: UY68RQZT14QPgSsfaw / F + w =​​=

Try this: 尝试这个:

//----------------------------------------------------
function getCharHex($aString) {

    $bytes  = str_split($aString, 2);
    $result = "";

    foreach ($bytes as $byte) {
        $result .=  chr(hexdec($byte));
    }

    return $result;
}


//----------------------------------------------------
function getHashedPass($pass, $salt) {

    $base_salt   = unpack('H*', base64_decode($salt)); 
    $base_pass   = unpack('H*', mb_convert_encoding($pass, 'UCS-2LE', 'auto'));
    $base_result = getCharHex($base_salt[1].$base_pass[1]);

    return base64_encode(sha1($base_result, true));
}


echo getHashedPass('111111', 'UY68RQZT14QPgSsfaw/F+w==');
//L0xc787MxCwJJaZjFX6MqxkVcFE=

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM