Größe von Zahlen

  • Ich hab ein Problem: Und zwar mach ich eine RSA-Verschlüsselung in PHP und dabei kommen ziemlich grosse Zahlen vor (z.B. 5.5032903171625E+17). Der Algorithmus stimmt, weil er für kleinere Zahlen alles richtig macht, deswegen vermute ich, dass es daran liegt, dass beim Rechnen die grossen Zahlen von PHP gerundet werden bzw. dass die Genauigkeit, mit der PHP rechnet, nicht gut Genug ist.

    Deswegen meine Frage: Kann man in PHP (on the run - nicht in der Config) einstellen, wie groß die größte Zahl sein muss, mit der er umgehen können soll? Oder kann der Fehler doch woanders liegen? Kann es sein, dass die modulo-operation ("%") bei grossen Zahlen Probleme hat?

    Thanx for help.

    *** Make it idiot proof, and someone will build a better idiot. ***

  • Ich kann Dir mit ziemlicher Sicherheit sagen, daß das mit "normaler" Float-Arithmetik nicht funktionieren wird, weil eben ab einer gewissen Größe (vermutlich bei Zahlen > 32 Bit) mit Gleitkommazahlen gearbeitet wird, und die eben nur eine gewisse Genauigkeit haben...

    yast, SuSEconfig, apt-get and rpm - the 4 horsemen of the apocalypse

    Platform of insanity :: http://www.dose-xp.org

  • Danke für die Hinweise. Ich hab die Lösung des Problems schon gefunden. Und zwar sollte man nicht zuerst die Potenzieren und dann modulo rechnen, sondern bei jedem Multiplikationsschritt gleich modulo rechnen. So wird die Zahl nicht so gross und das Problem gibt's erst gar nicht. Also z.B. statt (8^2) mod 5 zu rechnen, rechnet man ((8 mod 5) * 8) mod 5. ;)

    Bevor ich aber drauf gekommen bin, habe ich versucht die Sache mit BCMath zu lösen. Leider hat bei jedem Aufruf von einer bc-Funktion meine Apache aufgehaut ... ?! :(

    *** Make it idiot proof, and someone will build a better idiot. ***

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!