Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 31
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    43

    Implementazione algoritmo RSA in PHP

    Salve a tutti ho intenzione di implementare l'algoritmo rsa in php, l'ho gia fatto solo che ho riscontrato diversi problemi.

    Primo problema è quello che usando le normali formule lo script php non riesce a fare il modulo di un numero grande quindi nella fase di decifratura esso mi restituisce 0 e non il numero di partenza che ho crittografato. Questo è il codice
    Codice PHP:
    <?php

    function MCD($n1$n2)
    {    while (
    $n1 != $n2)
            {        if (
    $n1 $n2)
                        {            
    $n1 $n1 $n2;  }
     else {            
    $n2 $n2 $n1;        }    
    }    
    return 
    $n1;}

    $p=$_POST["numerouno"];
    $q=$_POST["numerodue"];
    $messaggio=$_POST["messaggio"];
    $x=1;
    $r=0;
    $i=2;
    $mcd=0;
    echo 
    "p= "$p;echo'<br><br>';
    echo 
    "q= "$q;echo'<br><br>';
    $n=$p*$q;echo "n="$n;echo'<br><br>';
    $w=($p-1)*($q-1);
    echo 
    "w= "$w;echo'<br><br>';
    while(
    $mcd!=1)
    {   
    $mcd MCD($w$i); 
      if(
    $mcd==1)    {     $e=$i;     $i=$w;   }  
     
    $i++;}
    echo 
    "e= "$e;echo'<br><br>';

    while(
    $r!=1)
    {
    $r=($e*$x)% $w;
    if(
    $r!=1){ $x++;}
    }
    echo 
    "d= "$x;echo'<br><br>';
    echo 
    "messaggio da inviare= "$messaggio;echo'<br><br>';
    $messaggioc=pow($messaggio,$e)% $n;
    echo 
    "messaggio cifrato= "$messaggioc;echo'<br><br>';
    $messaggiod=pow($messaggioc,$x)% $n;
    echo 
    "messaggio decifrato= "$messaggiod;echo'<br><br>';
    ?>
    Successivamente ho utilizzato un algoritmo che dopo tante ricerche ho trovato in rete il tutto funziona però con numeri primi piccoli invece utilizzando numeri primi come 617 o 521 quindi essenzialmente grandi nella fase di decifrazione non funzione perchè non mi restituisce il messaggio di partenza.
    Codice PHP:
    <?php

    function MCD($n1$n2)
    {    while (
    $n1 != $n2){    
        if (
    $n1 $n2){            $n1 $n1 $n2;        } 
    else {            
    $n2 $n2 $n1;        } 
       }    
    return 
    $n1;}

      function 
    chiave($n,$e,$m)   {     
       if (
    $m == || $e 0)  return 0;       
     
    $res 1;   
         
    $pow $n;     
       
    $e1  $e;     
       while (
    $e1 != 0) { $d   $e1%2
                             
    $e1  floor($e1/2);                      
                               if (
    $d == 1)  $res = ($res*$pow)%$m;              
                
    $pow = ($pow*$pow)%$m;                        } 
           if (
    $res 0)  $res += $m;     
        return 
    $res;   }

    $p=$_POST["numerouno"];
    $q=$_POST["numerodue"];
    $messaggio=$_POST["messaggio"];
    $x=1;
    $r=0;
    $i=2;
    $mcd=0;
    echo 
    "p= "$p;echo'<br><br>';
    echo 
    "q= "$q;echo'<br><br>';
    $n=$p*$q;
    echo 
    "n="$n;
    echo
    '<br><br>';
    $w=($p-1)*($q-1);
    echo 
    "w= "$w;echo'<br><br>';
    while(
    $mcd!=1){ 
      
    $mcd MCD($w$i); 
      if(
    $mcd==1)    {     $e=$i;     $i=$w;   }  
     
    $i++;}
    Questi sono i due script in php. Invece per l'acquisizione dei dati vi posto anche la pagina html con un form, senza però fare un controllo sui numeri inseriti.. quindi inserite solo numeri primi.
    codice HTML:
    <!DOCTYPE html>
    <html>
    <head>
    </head>
    <body>
    <form action="prova.php" METHOD="post">
    numero primo uno<input type="number" name="numerouno"><br><br>
    numero primo due<input type="number" name="numerodue"><BR><BR>
    messaggio<input type="number" name="messaggio"><BR><BR>
    <INPUT TYPE="SUBMIT" VALUE="invia">
    <INPUT TYPE="reset" VALUE="cancella tutto">
    </form>
    </body>
    </html>

    sto impazzendo anche perche in rete non c'è molto e voglio portare questo progetto per gli esami di stato... Grazie in anticipo...
    Ultima modifica di daniele5; 04-06-2015 a 14:44

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    In rete non c'è molto perché esistono delle funzioni specifiche già funzionanti per realizzare questa cosa (link), a che serve rifarla da zero?
    Capisco che tu voglia farlo per un progetto da presentare all'esame, ma nessuno si metterà a riscrivere funzioni che già fanno il loro dovere.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    43

    utilizzo openssl

    Inanzitutto grazie per la risposta ma io ho intenzione di creare un sito dove gli utenti si registrano e scambiano messaggi tra di loro crittografati. il sito l'ho già creato mi manca solo la crittografia dei messaggi. Volevo sapere se utilizzando openssl questo fosse possibile....

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Certo, serve a questo, ma per usare una connessione SSL il server te lo deve permettere e soprattutto devi comprarti un certificato.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    43
    Cos è un certificato? poi vorrei sapere se altervista lo consente oppure se è possibile utilizzando xamp

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Quote Originariamente inviata da daniele5 Visualizza il messaggio
    Cos è un certificato?
    http://www.symantec.com/it/it/theme....=how-ssl-works
    poi vorrei sapere se altervista lo consente
    poi attivare https con un certificato "condiviso" a 3,90 l'anno non so dirti se OpenSSL sia ammesso o installabile
    oppure se è possibile utilizzando xamp
    direi di no
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    43
    Grazie per avermi risposto peró ribadisco che il tutto è per gli esami di stato e non voglio acquistare nulla anche perchè non sono in grado di utilizzarevil protocollo https o ssl...
    Volevo solo sapere se esisteva qualche algoritmo per effettuare il modulo tra due numeri grandi perchè il problema è essenzialmente questo in quanto lo script php non riesce ad elaborare numeri cosi complessi....

  8. #8
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    A questo punto puoi:
    - accontentarti e criptare piccoli numeri
    - investire e implementare OpenSSL in un dominio a pagamento con relativo certificato
    - cambiare esercizio per l'esame

    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    43
    Grazie lo stesso

  10. #10
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    1) il certificato a pagamento non è affatto necessario, non mi è chiarissimo perchè questi suggerimenti.
    In un progetto scolastico uno autofirmato va benissimo
    2) il certificato NON cripta i messaggi, bensì il traffico (quindi credo non abbia molto a che fare col progetto)
    3) in un caso del genere NON si userebbe comuque RSA, bensì una cifratura simmetrica (decisamente più veloce).
    Eventualmente ci sarebbe lo scambio di chiavi temporanee per la cifratura simmetrica

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.