標題の通りです,私用で必要があるため,webで見つけたnode.jsでhashを計算するプログラムをPythonで書き起こしてみたものの,双方の結果が一致しなくて困っています.
node
1var crypto = require('crypto'); 2var fs = require('fs'); 3var args = process.argv.splice(2); 4 5/* ... */ 6 7if(args.length === 1) { 8 md5Hash(args[0]); 9} 10 11/* ... */ 12 13function md5Hash(file) { 14 const hash = crypto.createHash('md5'); 15 const input = fs.createReadStream(file); 16 input.on('readable', () => { 17 const data = input.read(); 18 if (data){ 19 hash.update(data); 20 } 21 else { 22 console.log(hash.digest('hex')); 23 } 24 }); 25}
Python
1import hashlib 2encode = "utf-8" 3text = input('変換したい文字列\n>>').rstrip() 4hash1=hashlib.md5(text.encode(encode)).hexdigest() 5print(encode+" : "+hash1)
※処理内容としてはnode.jsの方はファイルの名前を参照してそれをmd5に,Pythonはそのまま文字列を打ち込みmd5を計算するようにしているため全く同じではないですが...
結果は以下のようになります.
#node node hash.js .\files\0a39bcc9c0647cf569c6d7108726ec596007ed80 b8938f06d2bddd643769b2322dfca877 #python 変換したい文字列 >>0a39bcc9c0647cf569c6d7108726ec596007ed80 utf-8 : cf31175e3aadb0e711cdf2cfac2f640b
と,見ての通り結果が異なっています.
#試したこと
エンコード方法が両者で違うと考え,Pythonのtext.encode()をutf-8,Cp932,shift-jisでそれぞれ試しても結果は変わらなかった.
#欲しい回答
当方はこのnode.jsで得られるハッシュ列が作業で必要なため,Pythonの方をnode.jsの結果になるようにしたいのですが,node.jsを見てもmd5を単に計算しているようにしか考えられず,仕組みのよくわかっていないものを使うのは抵抗があります.知識を貸していただけたらと思います.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/07/17 03:34
2020/07/17 03:49 編集
2020/07/17 06:18 編集
退会済みユーザー
2020/07/17 06:26