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 :
id | login | password | date_ajout |
---|---|---|---|
1 | teodor | 00cafd126182e8a9e7c01bb2f0dfd00496be724f | 2013-09-28 16:32:10 |
2 | alphonse | e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4 | 2013-10-02 10:04:47 |
3 | maurice | 484952743f2a2fb29a6bbb92db4273aa45586b05 | 2013-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 :
id | login | password | date_ajout |
---|---|---|---|
1 | teodor | 00cafd126182e8a9e7c01bb2f0dfd00496be724f | 2013-09-28 16:32:10 |
2 | alphonse | e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4 | 2013-10-02 10:04:47 |
3 | maurice | 484952743f2a2fb29a6bbb92db4273aa45586b05 | 2013-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.