Verschlüsselung : RSA-Algorithmus

Ich bin Implementierung des RSA Algorithmus für die Verschlüsselung und Entschlüsselung, wie Sie hier angegeben:

http://www.di-mgt.com.au/rsa_alg.html

Aber nicht verstehen konnte, die random prime number generation Teil in der Schlüssel-Generierung.
Also ich nehme zwei Primzahlen, die als Eingabe vom Benutzer. Ich hatte Schwierigkeiten mit der Generierung der e auch. also machte ich es-Konstante (e= 17)

Einige prime Anzahl Eingänge arbeiten korrekt ( ich.e-Codierung und-Decodierung korrekt) in gcc unter linux, aber nicht in devcpp unter windows. (e.g 53,61)

Hier ist der Schlüssel-Generierung code:

/* Generates private and public keys and saves into two separate files */
void keygen()
{
    int p,q,phi,d,e,n,s;

    printf("\n Enter two prime numbers: ");
    scanf("%d%d",&p,&q);

    n = p*q;
    phi=(p-1)*(q-1);

    e=17;

    //selec d such that d*e = 1+ k*phi for some integer k.
    d = 0;
    do
    {
        d++;
        s = (d*e)%phi;
    }while(s!=1);

    printf("\n public key: { e=%d n=%d }",e,n);
    printf("\n private key: { d=%d n=%d }\n",d,n);

}

Brauchen Hilfe und Anregungen in der Primzahl-und e-generation.

  • pastebin ist nicht verwendet auf Stackoverflow. Bitte geben Sie Ihren code in der Frage selbst und versuchen, es zu begrenzen, die Teile, die Sie beunruhigen.
  • Tun Sie dies für Ihre eigene Unterhaltung und Bildung oder für eine Produktion Anwendung? Falls letzteres zutrifft, verwenden Sie eine vorhandene Bibliothek wie openssl.
  • Wenn Sie möchten, dass der code geeignet für Sicherheits-Anwendungen, die dann zusätzlich zu prime generation-problem, das Sie implementieren müssen, um arithmetische Operationen, die für sehr lange zahlen. Mehr oder weniger sichere Schlüssellänge von 2048 bits (noch kann geknackt werden, wenn Sie genügend Ressourcen haben, wenn). Damit Ihre 32-bit-Schlüssel (n = p*q) ist einfach nur lächerlich. Wenn Sie möchten, spielen Sie einfach mit - es ist OK.
  • Ihre while-Schleife nicht garantiert, um zu beenden. Für e haben eine inverse mod phi GCD(e,phi)=1, ein Zustand, nicht garantiert, um wahr zu sein.
InformationsquelleAutor Barshan Das | 2011-06-21
Schreibe einen Kommentar