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

回答編集履歴

5

確認コード追加

2019/07/21 08:49

投稿

SHOMI
SHOMI

スコア4079

answer CHANGED
@@ -19,12 +19,14 @@
19
19
  hash = hashlib.sha256(str(block).encode())
20
20
 
21
21
  print(hash)
22
+ print(hash.digest())
22
23
  print(str(binascii.hexlify(hash.digest()), 'utf-8'))
23
24
  print(hash.hexdigest())
24
25
  ```
25
26
  結果
26
27
  ```
27
28
  <sha256 HASH object @ 0x00000205C1845DF0>
29
+ b'F\xe3\x91\xc4(\x1c\x16-\xc4R\xa5\x8d\nun\xc6V\x8e\xbe:\xcb\xd9\xd3s\x1d\x1e\xcc\xc6l#\xd1{'
28
30
  46e391c4281c162dc452a58d0a756ec6568ebe3acbd9d3731d1eccc66c23d17b
29
31
  46e391c4281c162dc452a58d0a756ec6568ebe3acbd9d3731d1eccc66c23d17b
30
32
  ```

4

引用内容追加

2019/07/21 08:49

投稿

SHOMI
SHOMI

スコア4079

answer CHANGED
@@ -3,6 +3,9 @@
3
3
  計算したダイジェスト(ハッシュ)値をバイト列ではなく、16進形式文字列で返しているだけです。
4
4
  それと、比較すべき対象は`digest()`です。
5
5
  ```
6
+ hash.digest()
7
+ これまで update() メソッドに渡されたデータのダイジェスト値を返します。これは digest_size と同じ長さの、0 から 255 の範囲全てを含み得るバイトの列です。
8
+
6
9
  hash.hexdigest()
7
10
  digest() と似ていますが、倍の長さの、16進形式文字列を返します。これは、電子メールなどの非バイナリ環境で値を交換する場合に便利です。
8
11
  ```

3

比較対象名修正

2019/07/21 08:47

投稿

SHOMI
SHOMI

スコア4079

answer CHANGED
@@ -1,7 +1,7 @@
1
1
  [hashlib --- セキュアハッシュおよびメッセージダイジェスト](https://docs.python.org/ja/3/library/hashlib.html)
2
2
  ドキュメントを読みましょう。
3
3
  計算したダイジェスト(ハッシュ)値をバイト列ではなく、16進形式文字列で返しているだけです。
4
- それと、比較すべき対象はhash.digest()です。
4
+ それと、比較すべき対象は`digest()`です。
5
5
  ```
6
6
  hash.hexdigest()
7
7
  digest() と似ていますが、倍の長さの、16進形式文字列を返します。これは、電子メールなどの非バイナリ環境で値を交換する場合に便利です。

2

digest()追記

2019/07/21 08:46

投稿

SHOMI
SHOMI

スコア4079

answer CHANGED
@@ -1,6 +1,7 @@
1
1
  [hashlib --- セキュアハッシュおよびメッセージダイジェスト](https://docs.python.org/ja/3/library/hashlib.html)
2
2
  ドキュメントを読みましょう。
3
3
  計算したダイジェスト(ハッシュ)値をバイト列ではなく、16進形式文字列で返しているだけです。
4
+ それと、比較すべき対象はhash.digest()です。
4
5
  ```
5
6
  hash.hexdigest()
6
7
  digest() と似ていますが、倍の長さの、16進形式文字列を返します。これは、電子メールなどの非バイナリ環境で値を交換する場合に便利です。
@@ -14,11 +15,13 @@
14
15
  block = {'b':2, 'a':1 }
15
16
  hash = hashlib.sha256(str(block).encode())
16
17
 
18
+ print(hash)
17
19
  print(str(binascii.hexlify(hash.digest()), 'utf-8'))
18
20
  print(hash.hexdigest())
19
21
  ```
20
22
  結果
21
23
  ```
24
+ <sha256 HASH object @ 0x00000205C1845DF0>
22
25
  46e391c4281c162dc452a58d0a756ec6568ebe3acbd9d3731d1eccc66c23d17b
23
26
  46e391c4281c162dc452a58d0a756ec6568ebe3acbd9d3731d1eccc66c23d17b
24
27
  ```

1

説明更新

2019/07/21 08:45

投稿

SHOMI
SHOMI

スコア4079

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  [hashlib --- セキュアハッシュおよびメッセージダイジェスト](https://docs.python.org/ja/3/library/hashlib.html)
2
2
  ドキュメントを読みましょう。
3
- 計算したダイジェスト(ハッシュ)値をバイナリではなく、16進形式文字列で返しているだけです。
3
+ 計算したダイジェスト(ハッシュ)値をバイト列ではなく、16進形式文字列で返しているだけです。
4
4
  ```
5
5
  hash.hexdigest()
6
6
  digest() と似ていますが、倍の長さの、16進形式文字列を返します。これは、電子メールなどの非バイナリ環境で値を交換する場合に便利です。