好吧,所以基本上我遇到了这个问题,并在网上搜索了它,并且堆栈溢出没有使用python 3.0的新更新的代码,它在堆栈溢出和许多其他站点上都执行了此操作,因此我想发表第一篇文章有助于stackoverflow,因为我终于找到了解决方案
所以首先要
import random
from math import floor
from math import sqrt
这些很重要,因为您会看到我稍后需要这些特定的提示
首先让我们创建一个函数,以检查或验证是否为素数
def pkf(n):
if n%2==0:
return False
else:
if sqrt(n)-floor(sqrt(n))==0:
return False
else:
for i in range(3,floor(sqrt(n)-1),2):
if n%i==0:
return False
if n<=2:
return False
else: return True
因此,让我分解一下,并逐步说明如何以及为何在最大程度地优化的情况下起作用
def pkf(n):
if n%2==0:
return False
else:
从这一点开始,如果输入可以被二整除,我们可以快速将其注销,这大概是输入的50%,而我使用if else结构进行进一步的优化,因此我们不必输入无效时,通过额外的代码运行
if sqrt(n)-floor(sqrt(n))==0:
如果有完美的平方根,我们就可以消除素数的可能
对于范围在(3,floor(sqrt(n)-1),2)中的i: 如果n%i == 0: 返回False
我们从3开始,虽然1和2是质数,但它们不是我们想要的大小 因为我们过滤掉了所有的偶数,所以在四舍五入的平方根(如果存在任何因数的情况下)存在于其平方根与波纹管之间时,所有非素奇数都存在
我们以推算数的四舍五入的平方根结束,再次进行优化,所有 然后我们以2为步长,因为我们从3开始,这很奇怪,因此消除了一半的必要计算。
if n<=2:
return False
else: return True
任何小于等于2的数字都是技术上的质数,但是不是我们希望可以在开始时包含的数字的小数位数,但是将最小值设置为0的可能性极小,尤其是在以下情况下用于加密
到目前为止的完整代码
def pkf(n):
if n%2==0: #if it is devisable by two we can quickly write it off and I use an if else structure for optumisation
return False
else:
if sqrt(n)-floor(sqrt(n))==0:
return False
else:
for i in range(3,floor(sqrt(n)-1),2):
if n%i==0:
return False
if n<=2:
return False
else: return True
好吧,我们现在需要2个变量,质数的最小值和最大值,对于加密,最好是较大的数字
mini=1e7
mx=1e11
我分别使用这些变量名的最小值和最大值,因为我懒于键入完整的变量名,而max和min是python参数,因此效果不佳
def genPrime():
n=random.randint(mini,mx)
while not pkf(n):
n=random.randint(mini,mx)
print(n)
无论如何,这将帮助您通过高度优化来快速有选择地进行暴力破解,这是完整的代码
import random
from math import floor
from math import sqrt
mini=1e7
mx=1e11
def pkf(n):
if n%2==0: #if it is devisable by two we can quickly write it off and I use an if else structure for optumisation
return False
else:
if sqrt(n)-floor(sqrt(n))==0:
return False
else:
for i in range(3,floor(sqrt(n)-1),2):
if n%i==0:
return False
if n<=2:
return False
else: return True
def genPrime():
n=random.randint(mini,mx)
while not pkf(n):
n=random.randint(mini,mx)
print(n)
genPrime()
感谢阅读我的文章,我希望能多读一些文章,因为我了解这一斗争,我知道stackoverflow以记下新用户的帖子而臭名昭著,但是如果他们不这样做,我希望可以逐步发展有关如何立即构建RSA加密的逐步说明,以便您不必担心,我知道它虽然可以获得很好的材料,所以我为您提供了它,祝您编程愉快!