Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Programmation.php : Modulo sur des gros nombres

Posté par Dinofly (page perso, ) le 01 décembre 2004
Bonjour,

J'ai converti une fonction de chiffrement assez basique du Javascript vers le PHP, mais les résultats ne sont pas ceux que j'attends.

Il semble que PHP ait des difficultés pour calculer un modulo sur des grands nombres.



Voici l'extrait qui pose problème:



Javascript



Math.pow(M, e) % N





PHP



pow($M, $e) % $N





Avec les valeurs suivantes:

M = 76

e = 7

N = 306353



PHP me retourne -259931.

Javascript me retourne 129131.



Alors la question est: j'ai fait une connerie quelque part ou c'est un bug de PHP ?

Merci d'avance pour vos réponses éclairées.

> Lire le message (3 commentaires, moyenne: 1,7).  

Vous avez demandé le commentaire #504367.

Entiers

Posté par Pascal Terjan (Jabber id, page perso, ) le 01/12/2004 à 10:32. (lien). Évalué à 3.

La taille des entiers dépend de la plate-forme de support, mais la valeur maximale est généralement de 2 milliards et des poussières (c'est un entier signé de 32 bits). PHP ne supporte pas les entiers non signés.

pow(76,6) est supérieur je pense à ce qui tient sur 32 bits...

Si tu as le module bc pour gerer les grands entiers, essaye bcmod et bcpow, ou plus implement et plus efficacement bcpowmod directement.

  • [^]Re: Entiers

    Posté par Dinofly (page perso, ) le 01/12/2004 à 11:45. (lien). Évalué à 1.

    Merci, ça marche avec bcmod et bcpow !

    --
    Je connais bien l'algèbre de Boole, et j'ai même vu tous ses flims.