PyCrypto密码学库源码解析(二)RSA参数生成_rsa.generate-程序员宅基地

技术标签: RSA  python  实现  源码解析  密码学  pycrypto  

Python Crypto库源码解析(二) RSA参数生成

* 版权声明 *
引用请注明出处,转载请联系: [email protected]


本文主要讲解pycrypto库中RSA参数生成的实现方法。主要涉及的模块是PublicKey.RSA 和其继承模块PublicKey._RSA。


0 本文需要的背景知识

0.1 RSA算法的参数

在上一篇文章PyCrypto密码学库源码解析(一)随机数和大素数生成0.5 RSA算法描述 中已经提到RSA的参数生成相关的内容,这里重申一次:

选择两个大的质数p和q,p不等于q,计算N=pq
选择一个整数e与(p-1)(q-1)互质,并且e小于(p-1)(q-1)。
计算d:d× e ≡ 1 (mod (p-1)(q-1))。
将p和q的记录销毁。
(N,e)是公钥,(N,d)是私钥。

0.2 RSA参数的要求

根据上文所述,可以根据参数生成过程来逐一解释参数的要求。

选择两个大的质数p和q,p不等于q

现如今主流的RSA密钥要求达到的位数是1024比特,例如在浏览器的公钥证书中存放的公钥就是1024比特的,而推荐使用的安全性较高的则是2048比特,也就是要求p*q的结果应该达到1024比特。

选择一个整数e与(p-1)(q-1)互质,并且e小于(p-1)(q-1)

这一点是数论要求的,否则会造成算法被攻击,要保障gcd(e,(p-1)(q-1))=1也就是要保证gcd(e,p-1) = gcd(e,q-1) = 1,这一点实际上在上一篇文章中(2.6 获取一个满足RSA要求的强素数)已经讲解过:

if e and is_possible_prime:
            if e & 1:
                if GCD (e, X-1) != 1:
                    is_possible_prime = 0
            else:
                if GCD (e, divmod((X-1),2)[0]) != 1:
                    is_possible_prime = 0

getStrongPrime函数在生成素数的时候,就已经将e和p-1的关系做过判断,才进行的输出。

所以目前的问题只剩下如何选择参数e,对于参数e,在库的文档中有这样一段说明:

Public RSA exponent. It must be an odd positive integer.
It is typically a small number with very few ones in its binary representation.
The default value 65537 (= 0b10000000000000001 ) is a safe choice: other common values are 5, 7, 17, and 257.

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/O_1CxH/article/details/81674614

智能推荐

冒险岛历代版本科普(干货)-琳琳冒险岛_冒险岛083 道具等级-程序员宅基地

文章浏览阅读1.4w次,点赞4次,收藏6次。每个版本都有一个 故事 文章来源,琳琳冒险发布地址: mxd.liuyanlin.cn2004-07-23封测2004-08-23公测2004-08-31开放商城2004-09-14更新至V013,开放宠物和个人商店2004-10-21更新至V015,开放仓库、背包扩充功能2004-11-19更新至V016,开放废弃都市组队任务、新任务、各类雪板、双倍经验卡、增加新怪物 新增BOSS——绿水灵王2004-12-07官方网站公告声明严厉打击恶性外挂2004-12-09版本._冒险岛083 道具等级

【嵌入式面试】2022年嵌入式经典面试题汇总(Linux | 文件IO)_嵌入式linux面试题-程序员宅基地

文章浏览阅读2.4k次。2022年秋招我面试嵌入式MCU开发方向,经过了多场的笔试与面试,在准备的过程中看了非常多的资料,我的汇总的笔记一直写在有道云笔记中,没有分享出来。现在已经到了23年春招了,特此整理后分享出来。资料看过了觉得不错就保存下来了,如果有不对的地方,欢迎批评指正,侵权联删!_嵌入式linux面试题

esp32linux环境搭建(超详细,还不赶紧进来)_esp32 linux环境搭建-程序员宅基地

文章浏览阅读4.1k次,点赞4次,收藏23次。esp32linux环境搭建详细介绍_esp32 linux环境搭建

k-折交叉检验 (附代码)-程序员宅基地

文章浏览阅读629次。1.概念k-折交叉检验,k-fold cross test.一种检验机器学习效果的方法。k取值为10时就是10折交叉检验。将数据集均分成10份,做10次检验,取平均误差为最终误差。第i次检验时将第i份数据作为测试集,其余(10-1=9)份数据作为训练集。2.代码顺着逻辑直接写出来的代码:更优雅的代码如下: ..._k折交叉验证源代码

mysql_fetch_row()函数、mysql_fetch_assoc()函数、mysql_fetch_array()函数、mysql_fetch_object()函数之间的区别-程序员宅基地

文章浏览阅读1.6k次。two_two为了让小伙伴们能更清晰的理解,就分开写了如下代码,好好看哟首先呢,two_two的表中第一行数据如下:接下来,他们的区别呢,如下:1.mysql_fetch_row()函数$r1="select * from `tb_student`";//查表$r11=mysql_query($r1,$link);//执行SQL语句,返回资源类型的结果集$x1=mysql_fetch..._mysql_fetch_row()函数、mysql_fetch_assoc()函数、mysql_fetch_array()函数以及m

几个步骤将Ubuntu 20的apt的Ubuntu源更改为清华源_apt清华源-程序员宅基地

文章浏览阅读5.5k次,点赞6次,收藏7次。其中,focal代表Ubuntu 20.04的代号,根据不同版本的Ubuntu,需要相应更改。如Ubuntu 18.04的代号是Bionic Beaver。在打开的文件中,将默认的源地址替换为清华源地址。_apt清华源

随便推点

八爪鱼怎样导入mysql_八爪鱼采集数据导出sqlserver数据库(手动、自动两种方式) - 八爪鱼采集器...-程序员宅基地

文章浏览阅读1.1k次。本教程将为大家讲解如何将采集好的数据导出到sqlserver数据库中,这里给大家讲两种导出方式1.手动导出数据库:这种方式只能在任务采集完毕之后将采集之后的数据导出到数据库中。2.自动导出数据库:这种方式可以实现边采集边导,按照设置的时间间隔启动导出计划,这种方式只支持云采集。目前八爪鱼支持导出数据库有Mysql、SqlServer、Oracle中,本地采集和云采集的数据均可以导出到数据库中,教程..._八爪鱼采集器存入数据库

运行python报错,Warning! ***HDF5 library version mismatched error***_the hdf5 header files used to compile this applica-程序员宅基地

文章浏览阅读1.7w次,点赞4次,收藏20次。报错内容如下:Warning! ***HDF5 library version mismatched error***The HDF5 header files used to compile this application do not matchthe version used by the HDF5 library to which this application is link..._the hdf5 header files used to compile this application do not match

Solr 4.2.x 拼写检查组件-程序员宅基地

文章浏览阅读88次。2019独角兽企业重金招聘Python工程师标准>>> ..._solr拼写组件

linux命令之ls命令_使用“ls -l”命令列出的以下文件,属于链接文件的是( )。a-rw-rw-rw- 3 root-程序员宅基地

文章浏览阅读660次。首先ls命令是列出当前目录的内容,其次学之前先了解一下ls出来后的不同类型文件的标识. 表示隐藏文件 / 表示一个目录* 表示一个可执行文件@ 表示一个符号链接文件| 表示管道文件= 表示socket文件ls 文件当前目录,ls -a不隐藏以.字符开始的项目 ,ls -A列出除了.和..以..._使用“ls -l”命令列出的以下文件,属于链接文件的是( )。a-rw-rw-rw- 3 root

linux系列之常用运维命令整理笔录_linux运维命令-程序员宅基地

文章浏览阅读10w+次,点赞1.7k次,收藏1.1w次。本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新free -m其中:m表示兆,也可以用g,注意都要小写Men:表示物理内存统计total:表示物理内存总数(total=used+free)use......_linux运维命令

单基因gsea_零代码5分+的单基因综合分析-程序员宅基地

文章浏览阅读2k次,点赞2次,收藏26次。小伙伴们好呀!今天和大家分享的是2020年一月份发表在Front Bioeng Biotechnol(IF:5.122)的一篇文章,作者在主要针对头颈癌,从表达量入手,对PGRMC1高低表达组中的差异基因近行GO,GSEA等分析,并与头颈癌患者的临床信息相联系,系统地研究了PGRMC1在癌症中作为原癌基因的作用,发现它影响头颈癌的代谢活性并有预后价值。标题:Identification ..._singlegene.clincialcor.r代码

推荐文章

热门文章

相关标签