Your SlideShare is downloading. ×
La scomposizione dei numeri RSA                     Di Cristiano Armellini, cristiano.armellini@alice.it e Morfeo ChiesaSu...
basterà prendere in esame per ogni valore di k =1, 100 gli B interi           e provarlifino a che anche A non è intero qu...
Upcoming SlideShare
Loading in...5
×

La scomposizione dei numeri RSA

755

Published on

La scomposizione dei numeri RSA

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
755
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "La scomposizione dei numeri RSA"

  1. 1. La scomposizione dei numeri RSA Di Cristiano Armellini, cristiano.armellini@alice.it e Morfeo ChiesaSupponiamo di dover scomporre in fattori primi un numero intero ove p, q sono numeri primimolto grandi. Da Fermat sappiamo che ogni numero intero può essere espresso come la differenza di duequadrati , ovvero . Consideriamo due casiCaso a)Scriviamo , ovvero . Quindi dobbiamo trovare gli interi A tali che . D’altraparte sapevamo che il che porta proprio a .Nei problemi RSA i due fattori (p, q) pur essendo molto grandi in genere hanno la stessa dimensione nelsenso che sono dello stesso numero di cifre oppure differiscono al massimo di una o due cifre. Quindi detto e svolgendo o calcoli si arriva a . Ora non è detto che k sia intero tuttavia perogni k = 1,…100 possiamo considerare e quindi provare tutti gli interi A tali chefino a che anche B non è intero. E’ facile immaginare un sistema di calcolo parallelo che svolga talecompito. Ovviamente p =A+B, q = A-BVediamo una semplice applicazione in Visual Basic .netModule Module1 Sub Main() Dim n As Double Dim a, b As Double Dim c As Integer Console.Write("inserisci un intero ") n = Console.ReadLine() a = Math.Floor(Math.Sqrt(n)) b = Math.Sqrt(Math.Abs(Math.Pow(a, 2) - n)) While (b <> Math.Floor(b)) a = a + 1 b = Math.Sqrt(Math.Abs(Math.Pow(a, 2) - n)) End While Console.WriteLine(a - b) Console.WriteLine(a + b) Console.Write("inserisci un carattere per finire ") c = Console.Read End SubEnd ModuleCaso b)Scriviamo quindi con B = 0, 1, 2, 3,….. Anche qui come nell’esempio precedenteconsideriamo (ove p>q, k = 1, …100) Svolgendo i calcoli si arriva a e quindi se
  2. 2. basterà prendere in esame per ogni valore di k =1, 100 gli B interi e provarlifino a che anche A non è intero quindi p = A+B q = A-BVediamo una semplice applicazione in Visual Basic .NetModule Module1 Sub Main() Dim n As Double Dim a, b As Double Dim c As Integer Console.Write("inserisci un intero ") n = Console.ReadLine() b = 0 a = Math.Sqrt(Math.Pow(b, 2) + n) While (a <> Math.Floor(a)) b = b + 1 a = Math.Sqrt(Math.Pow(b, 2) + n) End While Console.WriteLine(a - b) Console.WriteLine(a + b) Console.Write("inserisci un carattere per finire ") c = Console.Read End SubEnd ModulePer velocizzare entrambi gli algoritmi in tutti i casi ricordiamo che i quadrati perfetti devono terminare conuna delle seguenti cifre 0, 1, 4, 5, 6, 9.

×