Python 将私钥转换为 RSA 密钥

2024-02-05

我有一个具有以下格式的私钥

-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIE6TAbBgkqhki....
----END ENCRYPTED PRIVATE KEY-----

如何将其转换为 RSA 格式的密钥

-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA28jIsb8SAhJritwO....
-----END RSA PRIVATE KEY-----

我当前使用的密码学版本是 2.8。非常感谢任何帮助。提前致谢。


正如 Maarten Bodewes 的评论中所述,使用 OpenSSL 可以将 PKCS#8 格式的加密私钥转换为 PKCS#1 格式的私钥(均为 PEM 编码)。但这也可以通过密码学库来完成。

密码学库支持导入 PKCS#8 格式、PEM 编码的(加密)私钥,方法为load_pem_private_key() https://cryptography.io/en/latest/hazmat/primitives/asymmetric/serialization/?highlight=load_pem_private_key#cryptography.hazmat.primitives.serialization.load_pem_private_key(从0.6版本开始),例如:

from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import serialization

pkcs8Encrypted = b"""-----BEGIN ENCRYPTED PRIVATE KEY-----
MIICzzBJB...
-----END ENCRYPTED PRIVATE KEY-----"""

privateKey = serialization.load_pem_private_key(
    pkcs8Encrypted, 
    b'mypassword',
    default_backend()
)

可以使用 PKCS#1 格式导出 PEM 编码的私钥private_bytes() https://cryptography.io/en/latest/hazmat/primitives/asymmetric/rsa/?highlight=private_bytes#cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey.private_bytes(从0.2版本开始):

pkcs1 = privateKey.private_bytes(
    encoding=serialization.Encoding.PEM,
    format=serialization.PrivateFormat.TraditionalOpenSSL,
    encryption_algorithm=serialization.NoEncryption()
)

print(pkcs1.decode('utf-8')) # -----BEGIN RSA PRIVATE KEY-----... 

密码学的当前版本是 3.4.7(2021 年 3 月)。 2.8 是从 2019 年 10 月开始,第 2.8 条。发布历史 https://pypi.org/project/cryptography/#history。实际上,这两种方法都应该可用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 将私钥转换为 RSA 密钥 的相关文章

  • Vimeo API:获取下载所有视频文件的链接列表

    再会 我正在尝试从 Vimeo 帐户获取所有视频文件的列表 直接下载的链接 有没有办法在 1 GET 请求中做到这一点 好的 如果是API限制的话 就100倍 我有硬编码脚本 我在其中发出 12 个 GET 请求 1100 多个视频 根据文
  • Flask-SocketIO redis 订阅

    我在用着https github com miguelgrinberg Flask SocketIO https github com miguelgrinberg Flask SocketIO实现 WebSocket 服务器 我需要从另一
  • 使用 C 测试 X509 证书到期日期

    如何以编程方式测试 X509 证书是否过期 他们是直接的加密 API 吗 或者我必须获取 not after 时间并在我的代码中手动检查它 你没有说是哪种语言 所以我还是总结一下 php data openssl x509 parse fi
  • 从所有数据帧列中删除子字符串

    我有一个单词列表 大约 1000 个单词 我称之为负面单词 CAST ARTICLES SANITARY JAN CLAUSES SPECIAL ENDORSEMENT 我很快就会用这个单词列表制作一个数据框 我还有一个数据框 看起来像 F
  • DynamodB:如何更新排序键?

    该表有两个键 filename 分区键 和eventTime 排序键 我要更新eventTime对于某些filename Tried put item and update item 发送相同的filename与新的eventTime但这些
  • 使用管理员权限打开cmd(Windows 10)

    我有自己的 python 脚本来管理我的计算机上的 IP 地址 它主要在命令行 Windows 10 中执行netsh命令 您必须具有管理员权限 这是我自己的计算机 我是管理员 运行脚本时我已经使用管理员类型的用户 Adrian 登录 我无
  • Python3将模块从文件夹导入到另一个文件夹

    我的结构字典是 mainFolder folder1 init py file1 py file2 py folder2 init py file3 py file4 py setup py init py 我需要将 file4 py 从f
  • Python Selenium 打印另存为 PDF 等待文件名输入

    我正在尝试通过打印对话框将网站另存为 PDF 我的代码允许我另存为pdf 但要求我输入文件名 我不知道如何将文件名传递到弹出框 附上我的代码 import time from selenium import webdriver import
  • 使用 Pandas 从 csv 文件读取标题信息

    我有一个包含 14 行标题的数据文件 在标头中 有经纬度坐标和时间的元数据 我目前正在使用 pandas read csv filename delimiter header 14 读取文件 但这只是获取数据 我似乎无法获取元数据 有人知道
  • 如何找到多个 pandas 数据框中一对列与任意顺序对的交集?

    我有多个 pandas 数据框 为了简单起见 假设我有三个 gt gt df1 col1 col2 id1 A B id2 C D id3 B A id4 E F gt gt df2 col1 col2 id1 B A id2 D C id
  • 为什么需要设置WORKON_HOME环境变量?

    我已经有一段时间没有使用 python 虚拟环境了 但我也安装了虚拟环境包装器 我的问题是 在文档页面中它说要这样做 export WORKON HOME Envs mkdir p WORKON HOME source usr local
  • 列表推导式和 for 循环中的 Lambda 表达式[重复]

    这个问题在这里已经有答案了 我想要一个 lambda 列表 作为一些繁重计算的缓存 并注意到这一点 gt gt gt j for j in lambda i for i in range 10 9 9 9 9 9 9 9 9 9 9 Alt
  • 如何从 python 脚本执行 7zip 命令

    我试图了解如何使用 os system 模块来执行 7zip 命令 现在我不想用 Popen 或 subprocess 让事情变得复杂 我已经安装了 7zip 并将 7zip exe 复制到我的用户文件夹中 我只想提取我的测试文件 inst
  • multiprocessing.Queue 中的 ctx 参数

    我正在尝试使用 multiprocessing Queue 模块中的队列 实施 https docs python org 3 4 library multiprocessing html exchang objects Between p
  • 在 django 中导入设置时出现奇怪的错误

    我有很多项目在 ubuntu 中使用 python2 7 和 virtualenv virtualenvwrapper 工作 在我的工作中 一些开发人员使用 macosx 和 windows 通常我像往常一样创建项目 django admi
  • Eclipse/PyDev 中未使用导入警告,尽管已使用

    我正在我的文件中导入一个绘图包 如下所示 import matplotlib pyplot as plt 稍后我会在我的代码中成功使用此导入 fig plt figure figsize 16 10 然而 Eclipse 告诉我 未使用的导
  • 根据标点符号列表替换数据框中的标点符号[重复]

    这个问题在这里已经有答案了 使用 Canopy 和 Pandas 我有数据框 a 其定义如下 a pd read csv text txt df pd DataFrame a df columns test test txt 是一个单列文件
  • 如何将两列 pandas Dataframe 移动并堆叠为一列?

    我有一个下面提到的数据框 ETHNIC SEX USUBJID 0 HISPANIC OR LATINO F 16 1 HISPANIC OR LATINO M 8 2 HISPANIC OR LATINO Total 24 3 NOT H
  • py2exe ImportError:没有名为 的模块

    我已经实现了一个名为 myUtils 的包 它由文件夹 myUtils 文件 组成 init py 和许多名称为 myUtils 的 py 文件 该包包含在 myOtherProject py 中 当我从 Eclipse 运行它们时可以找到
  • PyObjC + Python 3.0 问题

    默认情况下 Cocoa Python 应用程序使用默认的 Python 运行时版本 2 5 如何配置我的 Xcode 项目以便它使用较新的 Python 3 0 运行时 我尝试用新版本替换项目中包含的Python framework 但它不

随机推荐

  • AWS Lambda Node.js 全 ICU

    我使用以下命令在本地运行 node js 应用程序 node icu data dir node modules full icu app local js 如何在AWS Lambda环境中指定icu data dir Thanks 您应该
  • JPA 将 STRING 列值连接成单个值,就像聚合函数一样

    是否可以使用 JPA 拥有一个自定义聚合函数来扩展 concat 以便将列值连接成单个字符串 我最近在使用 JPA 和 H2 数据库时遇到了同样的问题 我试着打电话给组连接 http www h2database com html func
  • 有没有办法在 cocoapods 中使用拉取请求?

    有了 swift 3 许多 cocoapods 都在努力跟上每个测试版带来的变化 有时这些更改不会很快合并到分支中 在这些情况下 有没有办法使用分支的拉取请求 例子 https github com MengTo Spring pull 1
  • 为什么 Ubuntu docker 镜像不是虚拟机 [重复]

    这个问题在这里已经有答案了 我明白了虚拟机和容器之间的巨大区别 但这让我对 Ubuntu 容器如何存在感到困惑 这对我来说感觉很矛盾 因为 Ubuntu 是一个操作系统 https hub docker com ubuntu https h
  • 未知属性 onItemSelected/onCheckedChanged

    我创建了 SwitchCompat 并添加了android onCheckedChanged 一切正常 但 Android Studio 将此属性标记为警告 描述 未知属性 android onCheckedChanged AppCompa
  • java中的ESC/POS图像

    我需要在热敏打印机 SAM4S ELLIX40 中打印此图像 我一直在搜索和测试几个代码 但实际上没有任何效果 他们说 使用这个命令 你会看到一行 我发送了它 但没有任何反应 我尝试了手册中的命令 ESC m nL nH d1 dk GS
  • 字典键和 eval 中的破折号

    在我被 评估是邪恶 的人群打死之前 在这种情况下这是必要的邪恶 我无法改变它 Eval 有其用途 并且在严格控制的环境中它非常强大 然而 我有一个没有明显解决方案的问题 我希望能够跳出框框思考 gt gt gt mydict a b woo
  • Backbone.js Collection.create 并覆盖 Model.set

    我有一个主干模型 我在其中更改了 set 方法来计算模型每组的额外属性 根据文档 这应该是调用 super 的方式 以确保模型确实被保存 Backbone Model prototype set call this attributes o
  • 按空格分割字符串[重复]

    这个问题在这里已经有答案了 无论空格有多长 如何通过空格分割字符串 例如 来自以下字符串 the quick brown fox jumps over the lazy dog 我会得到一个数组 the quick brown fox ju
  • Vue 3:resolveComponent 只能在 render() 或 setup() 中使用

    我正在尝试在 Vue 3 中渲染一个模板 该模板包含一个组件 该组件在实例上本地注册 import template from template import RenderlessPagination from RenderlessPagi
  • Bash - 如果子节点的属性值不等于特定值,则删除 XML 节点?

    我有 RSS 提要 如下所示
  • 给定背景颜色,黑色还是白色文本?

    我正在尝试找到一种方法来确定在给定背景颜色 作为十六进制值 的情况下是否使用黑色或白色文本 以前有人处理过这个吗 有没有有效的方法来做到这一点 就我而言 我将使用 PHP 来实现逻辑 尽管任何使用其他语言的经验都是受欢迎的 亮度对比算法 我
  • JSF-将参数传递给 valuechangelistener

    我有一个像这样的小单选按钮
  • 确定 xml 文件是否包含数据 - c#

    我如何知道我的 XML 文件是否还包含名称空间信息之外的数据 一些文件包含以下内容 如果我遇到这样的文件 我想将该文件放在错误目录中 您可以使用 XmlReader 来避免 XmlDocument 的开销 在您的情况下 您将收到异常 因为根
  • pip 下载而不执行 setup.py

    如何下载发行版 可能是 sdist 而不可能执行setup py文件 可能包含恶意代码 我不想递归获取依赖项 只想下载指定发行版的一个文件 尝试无效 pip download no deps mydist 这是一个可重现的示例 演示了set
  • 如何向我在 Android 中用作背景的可绘制对象添加圆角?

    我有一个特定的可绘制对象 在我的应用程序中用作背景 它不是纯色 现在我想给这个可绘制对象添加圆角 我只发现圆角可用于具有渐变或纯色作为背景的形状 但没有其他可绘制的形状 是否有另一种简单的方法向可绘制对象添加圆角 Use AQuery使可绘
  • 桶太多,直方图聚合失败

    我有一个对 elastic 的查询 其中包含总共 8 个嵌套聚合 所有聚合都是term聚合 除了一个聚合histogram聚合 如果我删除该直方图聚合 查询将完美运行 但对于直方图聚合 它会抛出这个特定的错误 此聚合创建了太多存储桶 100
  • 为任何 CMS 系统创建 sitemap.xml 的最有效的性能方法是什么?

    我们想要在 CMS 系统中实现 sitemap xml 功能 我们的开发人员内部有一些争论 认为此功能会影响性能 因为每次内容发生更改时 都需要创建网站的完整链接列表并将其放置在 sitemap xml 中 这个想法是 每次编辑或添加公共查
  • Android Studio 中的 APK 分析器是什么以及如何充分利用它?

    Android Studio 包含一个 APK 分析器 可在顶部菜单中找到 Build gt Analyze APK 它是什么以及如何充分利用它 构建过程完成后 APK 分析器可以提供有关 APK 文件组成的详细信息 使用 APK 分析器的
  • Python 将私钥转换为 RSA 密钥

    我有一个具有以下格式的私钥 BEGIN ENCRYPTED PRIVATE KEY MIIE6TAbBgkqhki END ENCRYPTED PRIVATE KEY 如何将其转换为 RSA 格式的密钥 BEGIN RSA PRIVATE