日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python杂记-RSA加解密实现(2)

發(fā)布時間:2025/3/12 python 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python杂记-RSA加解密实现(2) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

二、計算素數(shù)
質(zhì)數(shù)(Prime number),又稱素數(shù),指在大于1的自然數(shù)中,除了1和該數(shù)自身外,無法被其他自然數(shù)整除的數(shù)(也可定義為只有1與該數(shù)本身兩個正因數(shù)的數(shù))。大于1的自然數(shù)若不是素數(shù),則稱之為合數(shù)(也稱為合成數(shù))。例如,5是個素數(shù),因為其正約數(shù)只有1與5。7是個素數(shù),因為其正約數(shù)只有1與7。而4則是個合數(shù),因為除了1與4外,2也是其正約數(shù)。6也是個合數(shù),因為除了1與6外,2與3也是其正約數(shù)。算術基本定理確立了素數(shù)于數(shù)論里的核心地位:任何大于1的整數(shù)均可被表示成一串唯一素數(shù)之乘積。為了確保該定理的唯一性,1被定義為不是素數(shù)。
測試n是否為素數(shù)的最基本方法為試除法。將n除以每個大于1且小于等于n的平方根之的整數(shù),若存在一個相除為整數(shù)的結(jié)果,則n不是素數(shù),反之則是個素數(shù)。

#!/usr/bin/env python3 # -*- coding: utf-8 -*- #2-10-3-2.pydef getPrimeNumbers(minNum,maxNum):pNs=[]import mathfor n in range(minNum,maxNum):for i in range(2,int(math.sqrt(n))+1): if (n%i==0):break else:pNs.append(n)return pNspNums=getPrimeNumbers(3000,3500) print(pNums)

2-10-3-2.py計算3000-3500之間的素數(shù),運行結(jié)果如下:
[3001, 3011, 3019, 3023, 3037, 3041, 3049, 3061, 3067, 3079, 3083, 3089, 3109, 3119, 3121, 3137, 3163, 3167, 3169, 3181, 3187, 3191, 3203, 3209, 3217, 3221, 3229, 3251, 3253, 3257, 3259, 3271, 3299, 3301, 3307, 3313, 3319, 3323, 3329, 3331, 3343, 3347, 3359, 3361, 3371, 3373, 3389, 3391, 3407, 3413, 3433, 3449, 3457, 3461, 3463, 3467, 3469, 3491, 3499]
三、計算公鑰和私鑰
1、計算p和q

#!/usr/bin/env python3 # -*- coding: utf-8 -*- #2-10-3-3.py import base64 import randomdef enCodeBase64(myStr):return base64.b64encode(myStr.encode("utf8"))def deCodeBase64(myStr):return base64.b64decode(myStr).decode("utf8")strTxt=""" 1978年出現(xiàn)了著名的RSA算法,它通常是先生成一對RSA密鑰, 其中之一是保密密鑰,由用戶保存; 另一個為公開密鑰,可對外公開,甚至可在網(wǎng)絡服務器中注冊。 為提高保密強度,RSA密鑰至少為500位長,一般推薦使用1024位。 這就使加密的計算量很大。 """def getPrimeNumbers(minNum,maxNum):pNs=[]import mathfor n in range(minNum,maxNum):for i in range(2,int(math.sqrt(n))+1): if (n%i==0):break else:pNs.append(n)breakreturn pNs#p,q minN=random.randint(10000, 25000) maxN=random.randint(minN+10000, minN+20000) p=getPrimeNumbers(minN,maxN) minN=random.randint(1000, 2500) maxN=random.randint(minN+1000, minN+2000) q=getPrimeNumbers(minN,maxN) print(p,q)

總結(jié)

以上是生活随笔為你收集整理的python杂记-RSA加解密实现(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。