teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

python改良版のコードを追記

2020/07/17 06:44

投稿

teamikl
teamikl

スコア8817

answer CHANGED
@@ -25,4 +25,24 @@
25
25
  解決策: Pythonのコードでもファイルの中のデータを読み込むように対応する。
26
26
 
27
27
  デバッグのヒント: まずは小さなデータを対象に
28
- 「計算対象のデータ」「計算されたハッシュ値」の双方を表示すると違いに気づくと思います。
28
+ 「計算対象のデータ」「計算されたハッシュ値」の双方を表示すると違いに気づくと思います。
29
+
30
+ ----
31
+ 追記2
32
+
33
+ コメントに書いたpythonのコードは確認用の短いコードで、
34
+ サイズの大きなファイルには使えないので、改良版のコードを追記しておきます。
35
+
36
+ 出典: https://stackoverflow.com/questions/3431825/generating-an-md5-checksum-of-a-file
37
+
38
+ ```
39
+ import hashlib
40
+ def md5sum(filename, blocksize=65536):
41
+ hash = hashlib.md5()
42
+ with open(filename, "rb") as f:
43
+ for block in iter(lambda: f.read(blocksize), b""):
44
+ hash.update(block)
45
+ return hash.hexdigest()
46
+
47
+ print(md5sum("./files/0a39bcc9c0647cf569c6d7108726ec596007ed80"))
48
+ ```

1

node.js のコードと pythnon のコードの相違点について追記

2020/07/17 06:44

投稿

teamikl
teamikl

スコア8817

answer CHANGED
@@ -12,4 +12,17 @@
12
12
  // Output: cf31175e3aadb0e711cdf2cfac2f640b
13
13
  ```
14
14
 
15
- ハッシュ値計算は問題ありません。問題は与えるデータが違う点です。
15
+ ハッシュ値計算は問題ありません。問題は与えるデータが違う点です。
16
+
17
+ ----
18
+
19
+ ./files/0a39bcc9c0647cf569c6d7108726ec596007ed80 を読み込んでいますが
20
+ 違いを分かりやすくするために、ファイル名を `test.txt` ファイルの中身は `ABC`とします。
21
+
22
+ node.js のコードでは、ファイル `test.txt` の中身の文字列 「`ABC`」 のハッシュ値を計算
23
+ python のコードは 「`test.txt`」という文字列のハッシュ値を計算。
24
+
25
+ 解決策: Pythonのコードでもファイルの中のデータを読み込むように対応する。
26
+
27
+ デバッグのヒント: まずは小さなデータを対象に
28
+ 「計算対象のデータ」「計算されたハッシュ値」の双方を表示すると違いに気づくと思います。