コンテンツにスキップ

009: 「小さな鍵、大きな秘密」のヒント

問題 / 解答

難易度: ☆☆

ヒント1

p = 61q = 53 は、前問の primes_up_to(100) で素数として確認できます。 np * q です。

ヒント2

phin ではなく、(p - 1) * (q - 1) です。 ephi が互いに素でないと、d は求まりません。 互いに素かどうかは、035の gcd で判定できます。

ヒント3

d は、e * dphi で割った余りが1になる数です。 Pythonでは、pow(e, -1, phi) でこのような数を求められます。

ヒント4

暗号化と復号では、巨大なべき乗そのものを作る必要はありません。 pow(message, e, n) のように第3引数を使うと、剰余を取りながらべき乗を計算できます。