如何在Python中将base64/radix64公钥转换为pem格式

0 投票
1 回答
5699 浏览
提问于 2025-04-15 14:07

有没有什么Python的方法可以把base64编码的密钥转换成pem格式?

怎么把ASCII装甲的PGP公钥转换成MIME编码的形式?

谢谢!

1 个回答

4

ASCII-armored和PEM格式非常相似。你只需要更改开始和结束的标记,去掉PGP的头部信息和校验和。我之前在PHP中做过这个,现在我把它移植到Python给你。

import re
import StringIO

def pgp_pubkey_to_pem(pgp_key):
    # Normalise newlines
    pgp_key = re.compile('(\n|\r\n|\r)').sub('\n', pgp_key)

    # Extract block
    buffer = StringIO.StringIO()
    # Write PEM header
    buffer.write('-----BEGIN RSA PUBLIC KEY-----\n')

    in_block = 0
    in_body = 0
    for line in pgp_key.split('\n'):
        if line.startswith('-----BEGIN PGP PUBLIC KEY BLOCK-----'):
            in_block = 1
        elif in_block and line.strip() == '':
            in_body = 1
        elif in_block and line.startswith('-----END PGP PUBLIC KEY BLOCK-----'):
            # No checksum, ignored for now
            break
        elif in_body and line.startswith('='):
            # Checksum, end of the body
            break
        elif in_body:
            buffer.write(line+'\n')

    # Write PEM footer
    buffer.write('-----END RSA PUBLIC KEY-----\n')

    return buffer.getvalue()

撰写回答