Curiosità algoritmo RSA

di il
58 risposte

58 Risposte - Pagina 2

  • Re: Curiosità algoritmo RSA

    Non contare questa parte
    Quindi queste serie di 5 + 5 + 5........ diviso per la chiave RSA producono solo e solamente un numero pari prima o poi e tutti gli altri numeri saranno dispari e ovviamente avranno la virgola sia il numero pari che il numero dispari ma quello che conta è che c'è solo un numero pari e una volta trovato il numero , bisogna calcolare quali due numeri primi sommati tra loro , formano la chiave RSA.
  • Re: Curiosità algoritmo RSA

    Continuo ad avere un pochino di problemi.
    Dato questo numero
    1522605027922533360535618378132637429718068114961380688657908494580122963258952897654000350692006139
    Mi sai dire i due fattori col tuo metodo?
    Se è troppo lungo proviamo con
    24681023
  • Re: Curiosità algoritmo RSA

    Ti ho accennato che bisogna conoscere i due numeri primi per il momento , quindi non è efficiente
  • Re: Curiosità algoritmo RSA

    aleasia ha scritto:


    Ti ho accennato che bisogna conoscere i due numeri primi per il momento , quindi non è efficiente
    Ma scusa qualcosa non mi torna.
    Nel tuo esempio fai questo

    (2178*N)/(22*N).
    Mi sembra abbastanza ovvio che venga sempre 2178/22, cioè 99.
    I due numeri magici come vengono scelti?
  • Re: Curiosità algoritmo RSA

    Mi serve il numero comunque , lo so che è ovvio ma per far vedere meglio


    Comunque per conoscere i due fattori bisogna trovare un numero pari esempio 500020 e dividerlo per 24681023 così si ha la somma
    , il problema è appunto che ci sono tanti numeri pari ma la cosa bella è che devono finire solamente con 5 o 0 e non con 2 4 6 8 ed è per questo che è come un Crivello
  • Re: Curiosità algoritmo RSA

    ??? i due numeri 2178 e 22 non sono quindi fissi, devono essere stabiliti volta per volta?
    E come?
  • Re: Curiosità algoritmo RSA

    Sono fissi , sai perché sono magici ? il 22 per questo allora prova a prendere un numero qualsiasi esempio 29 poi fai ((29 + 29 +290+290 )/22) hai notato che ho aggiunto uno 0 al 29 il risultato è 29 ; Mentre 2178 è particolare nel senso che ho sviluppato un programma l'algoritmo era (2178 * (N - N(al contrario ) ))/22 per un ciclo infinito e magia magia il risultato con qualsiasi valore N intero è sempre 2178 e 6534

    Scusa ho sbagliato questa e solo la prima operazione poi solamente N-N(alcontrario) per un ciclo infinito
  • Re: Curiosità algoritmo RSA

    Ti metto il codice meglio. in mezzo c'è altra roba ma lascia perdere sono prove
    #include<cstring>
    #include<iostream>
    using namespace std;
    
    
    long long int inversione(long long int numero)
    {
    long long int ris = 0;
    
    while(numero)
    {
    ris = ris * 10 + numero % 10;
    numero /= 10;
    }
    
    return ris;
    }
    
    
    
    int main ()
    
    { 
    	long long int aa = 0;
       long long  int ii = 0;	
    	long long int num1 = 0; 
    	long long int a = 0;
    	long long int primo = 0;
    	long long int num = 0;
    	while (aa == 0)
    	{
    	cout<<"Inserire numero superiore a 99 : ";
    	cin >>primo;
    	num = primo;
    	while (num != num1)
    	{
    	//inversione(primo);
    //cout<<"Numero invertito : "<<inversione(primo);
    		
     //if(ii == 0)
     if (ii == 0 )
    
     {
    	// num =  (6534 * (inversione(num ) - num ) ) / 22;   //  produce serie di numeri che si annullano o ritornano , con qualsiasi numero
    	 //num =  ((15657 * (inversione(num ) - num ) ))/22;
    	// num =  (2178 * (inversione(num ) - num ) ) /22;   //  produce 2178 o 21....9....78 e l'opposto 6534 o 65...9...34 con qualsiasi numero
    	 
    	 num =  (2178 * ( num  ) )/22;
    	 ii++;
    
    	 cout<<"Numero invertito : "<<num;
    	 if (num < 0)
    		 
    {
    	num = num * -1;
    	cout<<num;
    	//cout<<"Numero invertito : ";
    	 } 
    	 //else cout<<"\n"<<num<<"<---non vale !!   ";
    	 
    	 
    			 //cout<<num;
    		 //num = inversione(num) - num;
    	//	cout<<num<<"<---E' un numero negativo e non vale !!   ";
    	 
     }
     //if(ii > 0)
      if (ii > 0)
     {
    	 num = inversione(num) - num ;
     cout<<"\n"<<"Numero invertito : ";
     
      
    if (num < 0)
    
    {
    	num = num * -1;
    	cout<<num;
    }
    else cout<<num;
      
      }
      
    //int f = 0;		
     //cout<<"   Digitare 1 per continuare la verifica del numero primo : ";
     //cin>>f;
      }
    	//cout<<"Digitare 0 per continuare , 1 per finire : ";
    cin>>a;
    	}
    }
    
    
    
    
    
    
    
    
    
    
    
    
  • Re: Curiosità algoritmo RSA

    Non mi pare di avere seguito molto il ragionamento ma mi sa che si discosta molto dal problema.

    Dovresti partire da un numero primo come

    42871

    e solo da questo, arrivare ai due primi ... ce la fai senza introdurre altri valori?
  • Re: Curiosità algoritmo RSA

    Sinceramente credo che la corsa finisca qui , anche se c'è una piccola probabilità , nel senso che sappiamo come estrapolare la somma conoscendo i due numeri primi in partenza , quindi forse è solo una proprietà dei numeri in generale.
  • Re: Curiosità algoritmo RSA

    conoscendo i due numeri primi
    Ma scusa ... ti sfugge che questo è l'OBIETTIVO da ottenere?

    E' come cercare di indovinare due numeri sapendoli già !
  • Re: Curiosità algoritmo RSA

    Forse non ci siamo capiti , prendiamo il numero 15 ovvero 3*5 , ci sono 2 3 5 7 11 13 bene , normalmente tu provi tutte le combinazioni o più o meno tutte se parliamo di numeri molto grandi , fin qui ci sei ? ok. Se io parto dal presupposto che la serie 5 ovvero 5+5+5+5+5 quindi 5 / 15 poi 10 / 15 poi 15 /15 ad un certo punto solo 120 / 15 = 8 e solo il numero 8 è la somma di due numeri primi ovvero 5 + 3 ed è sempre un numero pari , potevo arrivare a 110 e avrei fatto 110 / 15 =7 è dispari e lo escludo a priori o potevo fare 100 / 15 = 6 è pari ma non è la somma di due numeri primi . Capisci ? Bisognerebbe avere un enorme database con tutte le combinazioni di somme di due numeri primi per esempio per fare un setaccio veloce ma come ho già spiegato precedentemente , rimane inefficiente , la cosa che mi sembrava strana era estrapolare la somma di due numeri da una moltiplicazione degli stessi , e magari poterla sfruttare perché io sinceramente non l'ho mai sentito questo.
  • Re: Curiosità algoritmo RSA

    @alesia, con numeri inferiori a 2^32 praticamente qualunque algoritmo di cifratura e' craccabile in millisecondi/secondi, con l'hardware odierno.

    Si inizia a parlare di sistemi crittografici di una certa serieta' quando hai chiavi dell'ordine di 2^128.

    Anche il DES (Data Encription Standard, 2^56) oggi lo cracchi con un cellulare.

    Il problema nasce quando hai numeri dell'ordine di 2^1024, 2^2048 o 2^8192.
    Qui' ti voglio vedere a tenere un db per tutte le combinazioni di primi!

    Non vi sono abbastanza atomi nell'INTERO UNIVERSO anche supponendo di espanderlo di miliardi di volte, per realizzare il database!

    Ti sfuggono gli ordini di grandezza coinvolti.
  • Re: Curiosità algoritmo RSA

    Quello che ho scritto riguardo ai tempi l'ho scritto in un momento di euforia due giorni fa , prima ho fatto copia e incolla qui sul forum , credimi pensavo di trovarci qualcosa di più , anche in termini di tempo , ma come poi ho corretto qui sul forum , è e probabilmente anche lavorandoci sù rimarrà inefficiente , anche perché io non sono un matematico , questa cosa è venuta fuori smanettando ,e quindi per puro caso , io ho un grande interesse per i Numeri Primi , quindi detto questo volevo solo un parere se voi ci trovavate qualcosa.
  • Re: Curiosità algoritmo RSA

    Usare il termine inefficiente e' assolutamente riduttivo: se un algoritmo, per completare la sua elaborazione, richiede una quantita' di tempo superiore alla vita dell'universo di mooooolti ordini di grandezza, cioe' terminera' abbondantemente dopo che tutte le stelle si sono esaurite ed i buchi neri si sono mangiati tutto quello che c'e' da mangiare, capirai anche tu che e' decisamente poco utile.

    Se vuoi affrontare i problemi seriamente e la materia ti piace, allora inizia a studiare teoria dei numeri (dove imparerai tutto quello che c'e' da sapere sui Numeri Primi) e complessita' computazionale, macchine di turing (con cui avere delle stime dei tempi di calcolo), oppure iscriviti alla facolta' di Matematica.

    Scoprirai che ci sono problemi decisamente spinosi di cui, attualmente, non esiste una soluzione, ma che sono importanti in molti settori della scienza.

    Considera questo: solo in Matematica, se ti viene dato il nome di un teorema, questo ti rendera' Immortale
Devi accedere o registrarti per scrivere nel forum
58 risposte