python - 在Python中加载RSA公钥文件并转换为二进制数组?

标签 python python-3.x rsa

我有一个 PEM 格式的 RSA 私钥文本文件,例如:

-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAhlxsnlo31l3u3w5jWyYpGVaNi9eDslPHgNV+I8Jb0hxGKXka
hnVOBu+b5IrcPcivWBIPQBNJp2svD/GVFWZQsKXshZA3meiRO+/k3qjBh7aDaakW
...etc
-----END RSA PRIVATE KEY-----

我使用 Python RSA 库加载它:

import rsa

with open('somefile.pem', mode='rb') as privatefile:
    keydata = privatefile.read()
privkey = rsa.PrivateKey.load_pkcs1(keydata)
print(type(privkey))
print(privkey)

这会输出括号中的五个十进制数字,例如:

<class 'rsa.key.PrivateKey'>
PrivateKey(1234..., 7889..., etc)

如何将这些数字或类转换为“二进制数组”(这是为了将 key 传递给 API)?

更新 我猜“二进制”是 DER 格式?

引用:https://stuvel.eu/python-rsa-doc/reference.html#classes

最佳答案

rsa.PrivateKey 对象的文本表示正在生成 here ,像这样:

    def __repr__(self) -> str:
        return 'PrivateKey(%i, %i, %i, %i, %i)' % (self.n, self.e, self.d, self.p, self.q)

因此,如果您想要这些值的数组,您可以编写:

privkey = rsa.PrivateKey.load_pkcs1(keydata)
privkey_array = [privkey.n, privkey.e, privkey.d, privkey.p, privkey.q]

关于python - 在Python中加载RSA公钥文件并转换为二进制数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63536489/

相关文章:

python - Pandas DF去除重名

Python 3.4 多处理队列比 Pipe 快,出乎意料

Python - 获取二维 numpy 数组的最小坐标元素

python-3.x - 在docker文件中使用特定的none-python基本图像设置特定的python版本

python - wxPython - 如何 "highlight"TextCtrl?

python - 安装 IPOPT 求解器以在 Windows 中与 pyomo 一起使用

ios - 从base64 RSA公钥生成SecKeyRef

python - 如何将这些列表合并到一个列表中?

java - 为什么这个js代码的RSA加密结果和java的RSA标准代码不一样?

java - 在 Android 中以 PKCS#1 格式在 Android 中生成 RSA key