PHP nombre trop grand (INF)

Résolu
Bonjour,

je dois manipuler un très grand nombre mai je ne peux pas car php me retourne infini
Comment puis je contourné ce problème ?

function puissance($x,$y)
{
$resultat=1;

for ($i=0;$i<$y;$i++)
$resultat *= $x;
return $resultat;
}

$beta = 115;
$gamma = 163;
echo puissance($beta,$gamma).'<br />';

je dois le faire dans le contexte du cryptage RSA.

Merci d'avance a tous ceux qui pourront m'aider a avancer dans ce problème.

3 réponses

  1. j'ai trouver la solution sur
    http://mathematiques.ac-dijon.fr/experiences/sequences/arithmetique/exponentiation_modulaire.htm

    dans le cadre du cryptage RSA
    c'est a dire A puissance n % m

    pas facile d'expliquer :

    il faut convertir en binaire la puissance.
    chaque 1 ou 0 représente une opération

    on commence par le (nombre a la puissance 1) modulo (le nombre du modulo)
    on récupère le reste puis

    le reste puissance 2 multiplier par
    le nombre a la puissance 1 modulo (le nombre du modulo)

    *le nombre a la puissance 1 est présent par rapport au binaire, si il y a un 0 on ne multiplie pas mai on passe direct au modulo (le nombre du modulo)

    soit le reste*reste % x = reste_suivant
    Sinon
    (reste*reste ) * le nombre a la puissance1 % le nombre du modulo
    1
    1. Salut
      La fonction pow ne va-t-elle pas ?
      https://www.php.net/manual/fr/function.pow.php
      0
      1. en testant elle me retourne inf

        et même avec ça :

        echo (pow($beta, $gamma)%253).'<br />'; // =0
        0
      2. Désolé, je ne sais pas.

        Peux-être dans les paramètres de PHP peut-on régler letemps de calcul maximum de PHP ? Je ne suis en tout cas pas en mesure de t'aider. Désolé.
        0
      3. j'ai pensé aussi a ça mai de toute manière je dois rester sur de l'algorithme
        car le langage ne sera peut être pas du PHP.

        merci de ton aide :)
        0
    2. je suis sur une piste "Exponentiation rapide"
      0
      1. jai un peu resolu le probleme :
        echo bcpowmod($beta, $gamma, 253).'<br />';
        reste a savoir si d'autre langage dont java, le font
        0