lunedì 20 aprile 2015

Equazione diofantina molto semplice

L'equazione X^2 = ZY + B

Si risolve con:


X = t 
Y = X + a 
Z = X - a 
a = radq(B)


Altra fondamentale equazione:
Z^m =X^2-Y^2

Z = a

X = a(1+a^(m-2))/2

Y = a(1-a^(m-2))/2

perché vale l'identità:

a^m =(a(1+a^(m-2))/2)^2 - (a(1-a^(m-2))/2)^2

martedì 7 aprile 2015

Fattorizzare RSA con il C sharp

programma in C#

using System;
using System.Collections.Generic;
using System.Text;

namespace rsa
{
    class Program
    {
        static void Main(string[] args)
        {
            long n = 1234567891243;
            double a, b;
            double p, q;
            string j;
            b = 1;
            a = Math.Sqrt(n + b * b);
            while (a != Math.Floor(a))
            {
                b = b + 1;
                a = Math.Sqrt(n + b * b);
            }
            p = a - b;
            q = a + b;
            Console.Write("primo fattore ");
            Console.WriteLine(p);
            Console.Write("secondo fattore ");
            Console.WriteLine(q);
            Console.WriteLine("inserisci carattere per finire");
            j = Console.ReadLine();
        }
    }
}



mercoledì 1 aprile 2015

Fattorizzare gli RSA con la ciclicità dei numeri primi

N = N_1*N_2*......N_k

N_1, ......, N_

k numeri interi tipo RSA (prodotto di due primi)

Se MCD(N, N_k+1) = P_k+1 <> 1 (Bezout) => Q_k+1 = N_k+1 / P_k+1 => l'ho fattorizzato

In ogni caso riconsidero
N = N_1*.....N_k*N_k+1 e procedo come sopra con il prossimo RSA N_k+2

=> anche l'ordine con cui vengono considerati gli RSA può essere importante (fare permutazioni potrebbe essere troppo oneroso)

=> il sistema funziona se si suppone che i numeri RSA contengono numeri primi che tendono a ripetersi


La distribuzione di Bernulli nella roulette

per Bernulli
P(n, k) = [n, k] p^k q^(n-k)
è la probabilità che un evento di probabilità p capiti k volte in n prove ripetute e quindi un evento di probabilità q=1-p capiti n-k volte.
[n k] = coefficiente binomiale = n!/(k!(n-k)!)

nella roulette possiamo approssimare p=q=1/2
quindi
P(n) = [n k] (1/2)^n
è la probabilità che in n lanci ci siano k rossi (o k neri)

f(n) = r/n è la frequenza di uscita dei rossi su n lanci
f => 1/2  su un gran numero di lanci  ma
se f(n) < p(n)  e f(n) < 1/2 giocare rosso ??
se f(n) > p(n)  e f(n) > 1/2 giocare nero ??

Possibili applicazioni di Bernulli anche in borsa (p = prob.sale q = prob. scende) o nelle scommesse sportive (p = prob. vince o pareggia, q= prob. perde)