Visualizzazione dei risultati da 1 a 10 su 31

Visualizzazione discussione

  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

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.