Python 已知 RSA 模数和指数,生成公钥进行加密

2023-11-10

在学习 js 加密的过程中,关于 RSA 加密知识有所接触,因此记录一下实际过程中遇到的问题。
在这里我们主要讲解当没有公钥,已知公钥模数和指数的情况下,实现 RSA 加密。

一、cryptography 包获取 RSA 公钥

首先需要安装 cryptography ,pip3 install cryptography

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


#方法一
def populate_public_key(rsaExponent, rsaModulus):
    '''
    根据cryptography包下的rsa模块,对指数模数进行处理生成公钥
    :param rsaExponent:指数
    :param rsaModulus:模数
    :return:公钥
    '''
    rsaExponent = int(rsaExponent, 16)  # 十六进制转十进制
    rsaModulus = int(rsaModulus, 16)

    pubkey = rsa.RSAPublicNumbers(rsaExponent, rsaModulus).public_key(default_backend())

    return pubkey
if __name__ == '__main__':
    rsaExponent = "010001"
    rsaModulus = "008baf14121377fc76eaf7794b8a8af17085628c3590df47e6534574efcfd81ef8635fcdc67d141c15f51649a89533df0db839331e30b8f8e4440ebf7ccbcc494f4ba18e9f492534b8aafc1b1057429ac851d3d9eb66e86fce1b04527c7b95a2431b07ea277cde2365876e2733325df04389a9d891c5d36b7bc752140db74cb69f"

    pubkey = populate_public_key(rsaExponent, rsaModulus)

二、rsa 包获取 RSA 公钥

需要安装 rsa,pip3 install rsa

import rsa

#方法二
def rsa_ne_key(rsaExponent, rsaModulus):
    '''
    通过rsa包依据模数和指数生成公钥,实现加密
    :param rsaExponent:
    :param rsaModulus:
    :return:
    '''
    rsaExponent = int(rsaExponent, 16)  # 十六进制转十进制
    rsaModulus = int(rsaModulus, 16)
    key = rsa.PublicKey(rsaModulus, rsaExponent)
    return key

if __name__ == '__main__':
    rsaExponent = "010001"
    rsaModulus = "008baf14121377fc76eaf7794b8a8af17085628c3590df47e6534574efcfd81ef8635fcdc67d141c15f51649a89533df0db839331e30b8f8e4440ebf7ccbcc494f4ba18e9f492534b8aafc1b1057429ac851d3d9eb66e86fce1b04527c7b95a2431b07ea277cde2365876e2733325df04389a9d891c5d36b7bc752140db74cb69f"

    key = rsa_ne_key(rsaModulus, rsaExponent)

Python 具体实现 RSA 加密的内容,后续等总结整理后,再分享大家一起学习。

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

Python 已知 RSA 模数和指数,生成公钥进行加密 的相关文章

随机推荐

  • 二叉树及其遍历

    二叉树的定义 二叉二叉顾名思义 二叉树是每个节点最多有两个子树的树结构 二叉树的存储 二叉树的存储分为顺序存储和链式存储 顺序存储 深度为k的二叉树需要预留2 k 1 个存储单元 按编号顺序存储 遇空节点留空位 可以看到上面特别多的空节点
  • spring cloud alibaba使用

    文章目录 架构图 环境搭建 Nacos 下载以及配置 测试使用 界面一些功能 可配置项 nacos自带的ribbon负载均衡 OpenFegin 日志配置 设置超时时间 自定义拦截器 Nacos config 根据nacos上的配置文件获取
  • Spring6 框架学习

    Spring6 框架学习 1 Spring介绍 1 1 简介 2002年 Rod Jahnson 首次推出了 Spring 框架雏形interface21 框架 2004年3月24日 Spring 框架以 interface21 框架为基础
  • QObject: Cannot create children for a parent that is in a different thread

    一篇又臭又长的流水账 要看结论可以直接拉到最后 在一个项目中 需要使用串口接收外部的对射管状态 然后调用传感器 由于在之前的项目中 自制了一个带有UI的串口管理类 继承QDialog 最早在主线程中生成这个串口管理类 但是发现程序变得越来越
  • error Command failed with exit code 1.

    从传统JQuery转变到Node js最烦的就是一接手新项目就得npm install 浪费大量时间不说还总会报莫明其妙的错误 这次又遇到了一个error Command failed with exit code 1 因为它的相关处报的问
  • 100+国产大模型排行榜!部分超越ChatGPT-4

    国产大模型的发展速度惊人 至少说明在国内的显卡数量是足够多的 如果能集中资源 或许能快速跟进ChatGPT 不过 其中不少厂家号称已经超越ChatGPT 4 让人感到欣慰 觉得哪个好 评论区见
  • 【金融】新成立基金建仓时点、行业分布与市场行情关系探究

    需要进一步交流 获取数据和代码的同学欢迎私信奥 基于新成立基金建仓带入市场的巨量资金会推动市场行情这一逻辑 开展了一系列研究 首先提出了通过基金净值识别建仓行为 累计绝对值涨跌幅法 和通过基金 值识别建仓行为 法 的两种方法 在通过回顾历史
  • 一键修改分辨率bat_设置分辨率的批处理

    if computername name1 SETRES h800 v600 b32 f85 if computername name2 SETRES h1024 v768 b32 f85 if computername name3 SET
  • libevent服务端,单线程应用

    libevent版本 libevent 2 1 12 stable include
  • 数据库MySQL与SQLite

    常用数据库及Qt中的用法 一 常用数据库 数据库管理系统 DBMS 是旨在使用 检索和定义规则以验证和操作数据库中的数据的软件 有四种DBMS类型 关系型 面向对象型 分层型和网络型 有很多开源数据库 包括MySQL SQLite等 SQL
  • Android13 Windows11-VMware-Ubuntu 源码下载和全编译

    Windows11 VMware Ubuntu Android13 源码下载和全编译 官方教程文档 想用 Mac 编译源码的朋友基本可以放弃想法了 我试过了各种兼容错误 不得已用了 Windows 装 VMware Ubuntu 一 硬件配
  • 知道这20个正则表达式,能让你少写1,000行代码

    正则表达式 一个十分古老而又强大的文本处理工具 仅仅用一段非常简短的表达式语句 便能够快速实现一个非常复杂的业务逻辑 熟练地掌握正则表达式的话 能够使你的开发效率得到极大的提升 正则表达式经常被用于字段或任意字符串的校验 如下面这段校验基本
  • python3 [爬虫入门实战]scrapy爬取盘多多五百万数据并存mongoDB

    总结 虽然是第二次爬取 但是多多少少还是遇到一些坑 总的结果还是好的 scrapy比多线程多进程强多了啊 中途没有一次被中断过 此版本是盘多多爬取数据的scrapy版本 涉及数据量较大 到现在已经是近500万的数据了 1 抓取的内容 主要爬
  • tensorrt的安装和使用

    安装 提前安装好 CUDA 和 CUDNN 登录 NVIDIA 官方网站下载和主机 CUDA 版本适配的 TensorRT 压缩包即可 以 CUDA 版本是 10 2 为例 选择适配 CUDA 10 2 的 tar 包 然后执行类似如下的命
  • rsync 远程同步

    Rsync 简介 rsync Remote Sync 远程同步 是一个开源的快速备份工具 可以在不同主机之间镜像同步整个目录树 支持增量备份 并保持链接和权限 且采用优化的同步算法 传输前执行压缩 因此非常适用于异地备份 镜像服务器等应用
  • auto 和 auto &是不一样的

    前言 什么时候用auto什么时候用auto 呢 先看代码testauto cpp include
  • unity 实现文本选中_Unity中如何读取TXT文本内容

    在游戏开发过程中 我们是离不开需求的 而需求的事情是由策划来做的 那么我们和策划也是需要沟通交流的 那么是怎么交流的呢 策划不需要写代码 只需要思考一些游戏的内容 数据 玩法的实现 然后让我们按照策划的东西来弄 所以和策划的沟通就是非常频繁
  • pgsql 自定义排序

    需求简述 用户要求查询数据表 使得输出结果指定中文字段chn name按照自定义的顺序 电 水 风 火等顺序排序 表内容 自定义排序sql 排序结果 工作中遇到的sql查询案例 如果有更简便的查询sql 欢迎多多交流
  • PlutoSDR学习指南【1】环境搭建+资料分享

    1 软件无线电及Pluto简介 软件无线电平台最通俗的语言来说 即通信系统中的功能采用软件实现 且可反复使用 比如简单的发射和接收信号 可以通过软件设置 信号的编码解码 可以通过软件设置 甚至你可以自己定义一种协议 用你自己的协议来实现一套
  • Python 已知 RSA 模数和指数,生成公钥进行加密

    在学习 js 加密的过程中 关于 RSA 加密知识有所接触 因此记录一下实际过程中遇到的问题 在这里我们主要讲解当没有公钥 已知公钥模数和指数的情况下 实现 RSA 加密 一 cryptography 包获取 RSA 公钥 首先需要安装 c