SQL SHA1()

Dans le langage SQL, la fonction SHA1() permet de chiffrer une chaîne de caractères sous le forme d’une chaîne de 40 caractères hexadécimal. La fonction calcule la somme de vérification SHA 1 de 160 bits comme décrit dans par la RFC 3174 (Secure Hash Algorithm).

Cette fonction SQL est utilisée couramment pour le hachage de clé ou en tant que fonction de cryptographie pour stocker un mot de passe.

A noter : la fonction SHA1() est une fonction de cryptographie plus sûre que la fonction MD5().

Syntaxe

Il est possible d’utiliser la fonction SHA1() dans une requête SQL en utilisant la syntaxe suivante :

SELECT SHA1('test');

Le résultat de cette requête est la chaîne suivante :

a94a8fe5ccb19ba61c4c0873d391e987982fbbd3

Exemple

Imaginons une application quelconque qui possède des compte utilisateurs avec un login, un mot de passe et une date d’ajout de l’utilisateur. Par mesure de sécurité, les mots de passe ne sont pas stocké en clair, ils sont cryptés avec la fonction SHA1() ce qui empêche des personnes mal-intentionnées ayant accès à la base de données de se connecter à un compte utilisateur.

Table utilisateur :

idloginpassworddate_ajout
1teodor00cafd126182e8a9e7c01bb2f0dfd00496be724f2013-09-28 16:32:10
2alphonsee5e9fa1ba31ecd1ae84f75caaa474f3a663f05f42013-10-02 10:04:47
3maurice484952743f2a2fb29a6bbb92db4273aa45586b052013-10-04 08:55:18

Lorsqu’un utilisateur souhaite se connecter à son compte il doit entrer son login et son mot de passe. Pour vérifier si le login et le mot de passe sont correct, il est possible d’utiliser la requête suivante.

SELECT id
FROM utilisateur
WHERE login = 'alphonse' AND password = SHA1('secret');

Cette requête va rechercher l’identifiant dans la table “utilisateur” qui possède le login “alphonse” et le mot de passe “secret” crypté avec la fonction SHA1().

Résultat :

idloginpassworddate_ajout
1teodor00cafd126182e8a9e7c01bb2f0dfd00496be724f2013-09-28 16:32:10
2alphonsee5e9fa1ba31ecd1ae84f75caaa474f3a663f05f42013-10-02 10:04:47
3maurice484952743f2a2fb29a6bbb92db4273aa45586b052013-10-04 08:55:18

Avec cet exemple, le résultat sera l’identifiant de l’utilisateur “alphonse”. Il est importer de noter que si le mot de passe indiqué par l’utilisateur n’était pas correct, la requête SQL n’aurait retourné aucun résultat.

Partager