• Like
  • Save
La scomposizione dei numeri RSA
Upcoming SlideShare
Loading in...5
×
 

La scomposizione dei numeri RSA

on

  • 1,040 views

La scomposizione dei numeri RSA

La scomposizione dei numeri RSA

Statistics

Views

Total Views
1,040
Views on SlideShare
1,040
Embed Views
0

Actions

Likes
0
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft Word

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    La scomposizione dei numeri RSA La scomposizione dei numeri RSA Document Transcript

    • 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
    • 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.