国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

使用python實現rsa算法代碼

2020-01-04 17:45:31
字體:
來源:轉載
供稿:網友

RSA算法是一種非對稱加密算法,是現在廣泛使用的公鑰加密算法,主要應用是加密信息和數字簽名。

維基百科給出的RSA算法簡介如下: 

假設Alice想要通過一個不可靠的媒體接收Bob的一條私人訊息。她可以用以下的方式來產生一個公鑰和一個私鑰: 

隨意選擇兩個大的質數p和q,p不等于q,計算N=pq。 

根據歐拉函數,不大于N且與N互質的整數個數為(p-1)(q-1) 

選擇一個整數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)是私鑰。(N,d)是秘密的。Alice將她的公鑰(N,e)傳給Bob,而將她的私鑰(N,d)藏起來。

#!/usr/bin/env python def range_prime(start, end): l = list() for i in range(start, end+1): flag = True for j in range(2, i): if i % j == 0: flag = False break if flag: l.append(i) return l def generate_keys(p, q): #numbers = (11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47) numbers =range_prime(10, 100) N = p * q C = (p-1) * (q-1) e = 0 for n in numbers: if n < C and C % n > 0: e = n break if e==0: raise StandardError("e not found") d = 0 for n in range(2, C): if(e * n) % C == 1: d = n break if d==0: raise StandardError("d not found") return ((N, e), (N, d)) def encrypt(m, key): C, x = key return (m ** x) % C decrypt = encrypt if __name__ == '__main__': pub, pri = generate_keys(47, 79) L = range(20, 30) C = map(lambda x: encrypt(x, pub), L) D = map(lambda x: decrypt(x, pri), C) print "keys:", pub, pri print "message:", L print "encrypt:", C print "decrypt:", D keys: (3713, 11) (3713, 1631) message: [20, 21, 22, 23, 24, 25, 26, 27, 28, 29] encrypt: [406, 3622, 3168, 134, 3532, 263, 1313, 2743, 2603, 1025] decrypt: [20L, 21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L] 

以上所述是小編給大家介紹的使用python實現rsa算法代碼,希望對大家有所幫助!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 禄劝| 诸暨市| 南涧| 丹江口市| 布尔津县| 即墨市| 城口县| 德惠市| 花莲县| 石屏县| 资兴市| 清徐县| 东阿县| 吉林省| 江津市| 都江堰市| 昌平区| 大埔区| 奇台县| 洪湖市| 高淳县| 甘德县| 凤台县| 柞水县| 赤壁市| 瑞昌市| 新营市| 霸州市| 图片| 盖州市| 德化县| 揭东县| 廉江市| 中牟县| 永登县| 平原县| 朝阳县| 文登市| 百色市| 贵溪市| 宁武县|