Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pb de cryptage de string avec SHA1

10 réponses
Avatar
rahan
Bonjour,

Je fais appel à une page .PHP située sur un serveur Apache/Linux.
Le script PHP fait appel à SHA1 pour crypter le mot de passe, mais ça ne
passe pas.

J'ai le message d'erreur suivant sur mon navigateur Web :
================================================================
Fatal error: Call to undefined function: sha1() in
/var/www/html/phpsyslogng/includes/common_funcs.php on line 26
================================================================

La ligne qui pose problème dans le fichier "common_funcs.php" est :
================================================================
// Get the sha1 hash of the password and query the database.
$pwHash = sha1($password);
================================================================

Le package "perl-Digest-SHA1-2.01-10" est installé sur mon serveur.

Je précise que d'autres scripts fonctionnent. je pense que mon probleme
est directement lié à l'algorithme SHA1.

Je me retourne desesperement vers vous. Toute idée sera la bienvenue.

Merci infiniment

Cordialement
Rahan

10 réponses

Avatar
Olivier Miakinen

J'ai le message d'erreur suivant sur mon navigateur Web :
=============================================================== > Fatal error: Call to undefined function: sha1() in
/var/www/html/phpsyslogng/includes/common_funcs.php on line 26
===============================================================
<cit. http://fr2.php.net/manual/fr/function.sha1.php>

(PHP 4 >= 4.3.0, PHP 5)
</>

Ta version de PHP est bien supérieure ou égale à 4.3.0 ?

--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)

Avatar
rahan
Olivier Miakinen wrote:

J'ai le message d'erreur suivant sur mon navigateur Web :
=============================================================== >>Fatal error: Call to undefined function: sha1() in
/var/www/html/phpsyslogng/includes/common_funcs.php on line 26
=============================================================== >


<cit. http://fr2.php.net/manual/fr/function.sha1.php>
(PHP 4 >= 4.3.0, PHP 5)
</>

Ta version de PHP est bien supérieure ou égale à 4.3.0 ?



J'utilise php-4.2.2-17

J'ai essayé de compiler la version 5, j'ai des erreurs de compilation...
Je vais essayé de trouver un package RPM pour une version >= 4.3.0

Merci de votre aide

Cordialement
Rahan


Avatar
rahan
rahan wrote:

Olivier Miakinen wrote:


J'ai le message d'erreur suivant sur mon navigateur Web :
=============================================================== >>> Fatal error: Call to undefined function: sha1() in
/var/www/html/phpsyslogng/includes/common_funcs.php on line 26
=============================================================== >>



<cit. http://fr2.php.net/manual/fr/function.sha1.php>
(PHP 4 >= 4.3.0, PHP 5)
</>

Ta version de PHP est bien supérieure ou égale à 4.3.0 ?



J'utilise php-4.2.2-17

J'ai essayé de compiler la version 5, j'ai des erreurs de compilation...
Je vais essayé de trouver un package RPM pour une version >= 4.3.0

Merci de votre aide

Cordialement
Rahan


J'ai installé la version PHP 4.4.2 (version compilée).

J'ai toujours le même problème. PHP ne sait toujours pas faire appel aux
fonction de OpenSSL.

Toute aide sera la bienvenue.

Merci

Cordialement
Rahan



Avatar
Olivier Miakinen

<cit. http://fr2.php.net/manual/fr/function.sha1.php>
(PHP 4 >= 4.3.0, PHP 5)
</>



J'ai installé la version PHP 4.4.2 (version compilée).


Et alors ? Ça marche, sha1() ?

J'ai toujours le même problème. PHP ne sait toujours pas faire appel aux
fonction de OpenSSL.


Quel même problème ? Quelles fonctions de OpenSSL ? La fonction sha1()
dont tu parlais initialement ne fait *pas* partie du package OpenSSL.

En revanche il y a des prérequis pour ce dernier :
<http://fr2.php.net/openssl>.



Avatar
rahan
Merci Olivier pour votre aide précieuse.

L'erreur que j'ai toujours est :
=========================================================== Fatal error: Call to undefined function: sha1() in
/var/www/html/phpsyslogng/includes/common_funcs.php on line 26
===========================================================
De quelle librairie dépond la fonction sha1() ?
j'ai cru comprendre qu'elle dépond de OpenSSL et que PHP a besoin de
PHP-OPENSSL pour faire appel aux fonctions de OpenSSL.

J'ai fais le tour de ce lien... je vais relire à nouveau, j'ai peut être
oublié quelque chose.

Merci Olivier

Cordialement
Rahan


Olivier Miakinen wrote:

<cit. http://fr2.php.net/manual/fr/function.sha1.php>
(PHP 4 >= 4.3.0, PHP 5)
</>



J'ai installé la version PHP 4.4.2 (version compilée).



Et alors ? Ça marche, sha1() ?


J'ai toujours le même problème. PHP ne sait toujours pas faire appel aux
fonction de OpenSSL.



Quel même problème ? Quelles fonctions de OpenSSL ? La fonction sha1()
dont tu parlais initialement ne fait *pas* partie du package OpenSSL.

En revanche il y a des prérequis pour ce dernier :
<http://fr2.php.net/openssl>.





Avatar
Calimero
rahan wrote:
Merci Olivier pour votre aide précieuse.

L'erreur que j'ai toujours est :
=========================================================== > Fatal error: Call to undefined function: sha1() in
/var/www/html/phpsyslogng/includes/common_funcs.php on line 26
=========================================================== >
De quelle librairie dépond la fonction sha1() ?


Aucune d'après la doc.
Aucune à mon avis parce que c'est un code simple (tu trouves des
implémentations en C grace à google), comme pour le hash md5. Ce
serait vraiment lourd de forcer le recours à une librairie
additionnelle alors que c'est facile à intégrer directement. A la
limite, ca peut même s'implémenter en PHP directement.

Bref, tu es bien passé en PHP >= 4.3.0 ? La mise à jour a été
correctement effectuée (phpinfo() dans la même page qu'un appel à
sha1()) ?

j'ai cru comprendre qu'elle dépond de OpenSSL et que PHP a besoin de
PHP-OPENSSL pour faire appel aux fonctions de OpenSSL.


Il est très probable que OpenSSL propose aussi le hashage SHA-1 (ainsi
que les autres algos de la famille), mais via l'API OpenSSL. Mais
c'est une implémentation différente avec un accès différent que "sha1()".

--
@+
Calimero

Avatar
rahan
Calimero wrote:
rahan wrote:

Merci Olivier pour votre aide précieuse.

L'erreur que j'ai toujours est :
=========================================================== >> Fatal error: Call to undefined function: sha1() in
/var/www/html/phpsyslogng/includes/common_funcs.php on line 26
=========================================================== >>
De quelle librairie dépond la fonction sha1() ?



Aucune d'après la doc.
Aucune à mon avis parce que c'est un code simple (tu trouves des
implémentations en C grace à google), comme pour le hash md5. Ce serait
vraiment lourd de forcer le recours à une librairie additionnelle alors
que c'est facile à intégrer directement. A la limite, ca peut même
s'implémenter en PHP directement.



Bonsoir et grand merci à votre participation à mon problème.

N'étant pas codeur en PHP... je ne sais pas si je vais pouvoir
implémenter une fonction hasha sirectement en PHP... un exemple simple ?

Bref, tu es bien passé en PHP >= 4.3.0 ? La mise à jour a été
correctement effectuée (phpinfo() dans la même page qu'un appel à sha1()) ?



J'arrive a executer phpinfo, j'ai comme retour PHP 4.2.2 !! :(
J'ai pourtant compilé et installé PHP 4.4.2.

La commande "php -v" renvoi pourtant la version php 4.4.2 :
PHP 4.4.2 (cgi) (built: Jun 2 2006 20:43:00)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies

Il doit y avoir un conflit avec la version 4.4.2 alors... ?

Lorsque je supprime la version php 4.2.2 (rpm -e php...) les pages php
ne s'executent plus sur mon serveur apache... comme si la version 4.4.2
est ignorée du système...

je ne comprend plus rien... avec Linux, parfois je suis super content et
parfois je suis a un poil de la dépression...

Une idée SVP ?

j'ai cru comprendre qu'elle dépond de OpenSSL et que PHP a besoin de
PHP-OPENSSL pour faire appel aux fonctions de OpenSSL.



Il est très probable que OpenSSL propose aussi le hashage SHA-1 (ainsi
que les autres algos de la famille), mais via l'API OpenSSL. Mais c'est
une implémentation différente avec un accès différent que "sha1()".



hum... ok. il doit en effet y avoir plusiuers inplémentations.

Merci de votre précieuse aide

Cordialement
Rahan


Avatar
Calimero
rahan wrote:

Bonsoir et grand merci à votre participation à mon problème.

N'étant pas codeur en PHP... je ne sais pas si je vais pouvoir
implémenter une fonction hasha sirectement en PHP... un exemple simple ?


Google donne ca en qq secondes.
http://www.tecknik.net/sha-1/

Mais c'est pas la bonne solution, à mon avis.

J'arrive a executer phpinfo, j'ai comme retour PHP 4.2.2 !! :(
J'ai pourtant compilé et installé PHP 4.4.2.

La commande "php -v" renvoi pourtant la version php 4.4.2 :
PHP 4.4.2 (cgi) (built: Jun 2 2006 20:43:00)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies

Il doit y avoir un conflit avec la version 4.4.2 alors... ?


A vue de nez tu as compilé la version CGI et non en tant que module
d'Apache.

As-tu bien suivi ces instructions ?
http://www.php.net/manual/fr/install.unix.php#install.unix.apache
C'est à dire compiler en tant que module pour ta version d'Apache (1.3
ou 2.0).

Lorsque je supprime la version php 4.2.2 (rpm -e php...) les pages php
ne s'executent plus sur mon serveur apache... comme si la version 4.4.2
est ignorée du système...

je ne comprend plus rien... avec Linux, parfois je suis super content et
parfois je suis a un poil de la dépression...

Une idée SVP ?


1/ En fonction de ta distribution (Mandriva ? RedHat ? Fedora ?...),
chercher un package RPM binaire plus récent et l'installer. Voir
rpmfind ou l'éditeur de ta distrib. Ca devrait pouvoir se trouver, PHP
n'étant quand même pas un obscure soft utilisé que par deux barbus.

2/ Comme dit plus haut, recompiler toi-même PHP en tant que module
d'Apache à partir des sources, en respectant les chemins
d'installation de ta distribution (tu dois pouvoir trouver sur google
des howtos/articles expliquant la compilation de PHP pour Apache sous
Mandriva, RH...).


Il est très probable que OpenSSL propose aussi le hashage SHA-1 (ainsi
que les autres algos de la famille), mais via l'API OpenSSL. Mais
c'est une implémentation différente avec un accès différent que "sha1()".



hum... ok. il doit en effet y avoir plusiuers inplémentations.


OpenSSL est un moteur générique avec différents sous-modules de
chiffrement et de hashage. Tu peux donc au travers d'une même API
accéder à de multiples algos de chiffrement et de hashage. Tu as donc
plus de fonctionnalités, mais leur utilisation est un pouillème plus
complexe.

--
@+
Calimero


Avatar
rahan
Merci Calimero pour votre aide et conseils.

Dans un premier temps, je vais recompiler le bazar en suivant la
procédure pour apache... espérant que ça marche.

Si non, je vais revoir l'idée d'integrer hash directement en PHP...
j'espere que je n'aurai pas besoin de faire cela... pourtant, ça ne
semble pas etre compliquer a implémenter.

Pour les RPM, j'utilise la Redhat 9. Et je n'arrive pas a trouver une
version rpm récente de PHP pour cette distribution. D'ailleurs, à ce
propos, je commence de plus en plus a avoir du mal a trouver des RPM
récents pour la Redhat 9. Par contre, pour FEDORA ou Redhat version
Entreprise, j'en croise a chaque fois que je cherche un RPM pour une
Redhat 9. Je me demande ainsi, si je ne devrai pas dans quelques
semaines passer sur redhat Entreprise ou Fedora. Mais bon, je vais
revoir sur cette question plus tard.

Je vais donc suivre vos recommandations de compilation de PHP avec
Apache et je ferai un retour sur le forum.

Je ne sais pas comment te remercier pour l'aide que tu m'apportes. MERCI.

Cordialement
Rahan
Avatar
rahan
Bonsoir,

ça a marché !!!!! :) :) :) :)

il y a urgence, je vais sortir crier un coup, j'espere que personne ne
portera plainte contre tapage nocturne :)

houla la-la-la, c'est bon, je vais arrêter de prendre les produits anti
dépressif :)

Problème résolu aprés une simple installation de :

php-4.4.2 (j'utilisais php-4.2.2)
apache-2.2.2 (j'utilisais apache-2.0)

Désormais, phpinfo() renvoit bien :
PHP Version 4.4.2

J'ai suivie la procédure que tu m'as envoyé en version FR et simplifié
sur : http://fr3.php.net/manual/fr/print/install.unix.apache2.php

A part suivre la procédure, je n'ai rien fait d'autre. C'est à dire que
je n'ai pas eu besoin des librairies mhash ni de php-mhash... je suppose
qu'elle sont deja installées puisque lorsque je fais : "php -m" parmis
les modules affichés il y a "mhash".

Merci infiniment pour votre aide précieuse. A présent, je vais à la
fête... :)

GRAND OUF!

Cordialement
Rahan