Python : 公開鍵の形式とビット数を得る

公開鍵の形式が RSA か ECC か、ビット数はいくつかを確認するメモです。
cryptography ライブラリを使用します。

pip install cryptography
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives.asymmetric import rsa, ec
from cryptography.hazmat.primitives.asymmetric.rsa import RSAPublicKey
from cryptography.hazmat.primitives.asymmetric.ec import EllipticCurvePublicKey

# RSA公開鍵
def get_rsa_public_key():
  private_key = rsa.generate_private_key(
    public_exponent=65537,
    key_size=2048,
    backend=default_backend()
  )
  public_key = private_key.public_key()
  return public_key

# ECC公開鍵
def get_ecc_public_key():
  private_key = ec.generate_private_key(ec.SECP256R1())
  public_key = private_key.public_key()
  return public_key

# 公開鍵の確認
def show_key_info(public_key):
  key_type = "形式不明な公開鍵"
  if isinstance(public_key, RSAPublicKey):
    key_type = "RSA公開鍵"
  elif isinstance(public_key, EllipticCurvePublicKey):
    key_type = "ECC公開鍵"
  print(f"{key_type} {public_key.key_size}bit")

show_key_info(get_rsa_public_key())
show_key_info(get_ecc_public_key())

実行結果

RSA公開鍵 2048bit
ECC公開鍵 256bit

コメント