herrDeng網內搜尋

自訂搜尋

Ads

2022年5月10日 星期二

python版教科書級RSA產生key

有些版次的車輪沒造好,就自己造,以下為教科書版能處理1024-bit RSA的python程式


  1. print('利用sympy、numpy來實作RSA演算,含字串的加解密')
  2. import sympy
  3. import numpy as np
  4. ?sympy
先產生質數
  1. def generate_prime():
  2. prime = sympy.randprime(2**511, 2**512)
  3. return prime
  4. p=generate_prime()
  5. q=generate_prime()
  6. print('p=',p,'\nq=',q)
  7. print(type(p))
  8. n=p*q
  9. print('模數n=',n)
公鑰e與私鑰d
  1. phi_n=(p-1)*(q-1)
  2. print('phi_n=',phi_n)
  3. lambda_n=phi_n/sympy.gcd(p-1, q-1)
  4. lambda_n
  5. e=sympy.randprime(phi_n//2, phi_n)
  6. print('公鑰e=',e)
  7. ?sympy.gcdex
  8. d, _, gcd = sympy.gcdex(e, phi_n)
  9. if gcd!=1:
  10. print('gcd(e, phi_n)!=1錯')
  11. d=(d+phi_n)%phi_n
  12. print("私鑰d=",d)
  13. e*d%phi_n==1

沒有留言:

Related Posts Plugin for WordPress, Blogger...

熱門文章