2013-07-24 50 views
0

我在php和javascript(nodejs)中有兩個函數,兩者都必須給出相同的結果,但他們沒有。在Nodejs和PHP中處理文本

他們爲什麼會給出不同的結果?

PHP:

base64_encode(sha1($string,1)); 

的Javascript:功能

new Buffer(require("crypto").createHash("sha1").update(string,"utf8").digest("hex")).toString("base64"); 
+0

我不知道Node.js的功能,所以我把這個作爲一個評論:你的PHP代碼使用SHA1()作爲輸入,爲BASE64_ENCODE原始的二進制輸出,同時它在我看來,在node.js代碼中,sha1的字符串首先被轉換爲十六進制。 (請參閱http://de3.php.net/manual/en/function.sha1.php使用sha1()中的第二個參數) – cypherabe

+0

謝謝。真的,這是問題。 Javascript版本的函數是錯誤的。 我用這個: require(「crypto」)。createHash(「sha1」)。update(string,「utf8」)。digest(「base64」) – uSide

+0

您好,歡迎來到Stackoverflow。你可以接受你自己的答案(過一會兒)。 –

回答

0

的JavaScript版本是錯誤的。 我用這個:

require("crypto").createHash("sha1").update(string,"utf8").digest("base64")