公開鍵の形式が 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
コメント