secrets と compare_digest
次のコードを実行したときの出力として、正しいものを1つ選べ。
import secrets, hmac
print(len(secrets.token_hex(8)), hmac.compare_digest(b"ab", b"ab"))
- A
8 True - B
16 True - C
16 False - D
8 False
正解と解説を見る
正解:B
secrets は暗号用途の安全な乱数を作る(random は暗号用途には使わない)。hmac.compare_digest は、比較時間から情報が漏れない比較。
| 順 | 実行する行 | 実行後の変数 |
|---|---|---|
| 1 | `import secrets, hmac` | — |
| 2 | `print(len(secrets.token_hex(8)), hmac.compare…` | — |
| 結果 | 実際の出力 | 16 True |
- A
誤り。16 進文字列は、バイト数の 2 倍の長さ。
- B
正しい。
token_hex(8)は 8 バイトを 16 進文字列にするので 16 文字。compare_digestは、時間差攻撃を避けて比較する。 - C
誤り。同じ値の比較は真。
- D
誤り。長さは 16、比較は真。
このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。