gmp Variable potenzieren



  • Hi Leute, ich bins mal wieder.
    Ich schreibe meine eigene RSA, komme eigentlich gut voran aber habe ein kleineres Problem: Ich brauche rieseige Variabeln und man hat mir hier zu gmp geraten. So weit so gut, läuft alles aber:

    Ich muss eine Variable potenzieren können.
    Meine Idee sieht so aus:

    #include <iostream>
    #include <gmp.h>
    
    int main()
    {
    mpz_t variable1;
    mpz_init(variable1);
    unsigned int variable2=4;
    
    mpz_set_str(variable1,variable2,100);
    return 0;
    }
    

    Allerdings funktioniert die Zeile

    mpz_set_str(variable1,variable2,100);
    

    nicht. Weshalb ist mir auch klar, statt der Variable2 erwartet die Funktion einen String.

    Allerdings kann ich nicht einfach

    mpz_set_str(variable1,"4",100)
    

    schreiben, da die variable2 in meinem Programm variabel sein muss.

    Hat jemand eine Idee für mich wie ich das hinbekomme?
    Wäre unglaublich dankbar! 😋

    mfg
    Simon

    (ich kann das nicht mit gewöhnlichen Variabeln coden, da die Zahlen mehrere 100 Stellen haben.. )



  • Wenn du eine Variable nicht mit einem String sondern einem unsigned int Wert initialisieren willst gibt es die Funktion mpz_set_ui . Da du aber Potenzieren möchtest kannst du auch gleich die mpz_pow_ui Funktion nutzen wo man den Exponenten ebenfalls als unsigned int angibt.

    PS: Da du ja scheinbar C++ programmierst, könntest du auch die C++ Erweiterung von GMP nutzen. Da hättest du direkt

    mpz_class variable1 = 100;
    

    schreiben können.


  • Mod

    hobbycryptographer schrieb:

    RSA

    Ich muss eine Variable potenzieren können.

    Nein, musst du nicht. Und solltest du nicht. In jeder brauchbaren Erklärung zu RSA wird erklärt, wie man das macht, ohne tatsächlich diese Potenzen auszurechnen. Der Trick ist, dass du schließlich nicht an der Potenz interessiert bist, sondern an der Potenz modulo einer anderen Zahl. Das Berechnen des Gesamtergebnisses geht wesentlich einfacher als der Weg über Zwischenergebnisse.


Anmelden zum Antworten