Questions courantes

La réponse aux questions les plus courantes sur SHA1 ?



Faut-il utiliser SHA1 pour stocker ses mots de passe ?

On dit souvent que SHA1 n'est pas sur. Il existe en effet des risques de collisions, et le temps pour tester toutes les combinaisons possibles est de plus en plus court avec les ordinateurs actuels. Prenons par exemple un mot de passe de 8 caractères ne contenant que des caractères minuscules. Cela fait 26^8 = 208 milliars de combinaisons. Des "craqueurs" spécifiques peuvent ajourd'hui tester près de 60 millions de combinaisons par seconde. Un tel mot de passe peut donc être décodé en près d'une heure.

SHA1 n'est donc pas sur ! Il est recommandé d'utiliser bcrypt !

Quelle est la différence avec SHA2 ou SHA256 ?

SHA2 est en fait un ensemble d'algorithme, contenant notamment SHA256, SHA512 mais aussi SHA22, SHA384 ainsi que d'autres variantes. L'algorithme utilisé est différent, mais la sécurité est la même, et la différence de temps de traitement entre les deux est uniquement de 30%. SHA256 est donc très légèrement plus sûr que SHA1, mais cela est négligeable.

Comment utiliser SHA1 en PHP ?

$text = 'mon mot de passe';
$text_hashed = sha1($text);

Comment utiliser SHA1 en Ruby ?

require 'digest/sha1'
Digest::SHA1.hexdigest 'foo'

Comment utiliser SHA1 en Node.JS ?

var crypto = require('crypto')
  , shasum = crypto.createHash('sha1');
shasum.update("foo");
shasum.digest('hex');

Comment stocker un hash SHA1 dans MySQL ?

Une chaine de caractère SHA1 fait toujours 40 caractères. On pourrait donc utiliser un VARCHAR(40), mais VARCHAR fait perdre 1 bits de longueur, soit 161 bits. Il serait alors plus judicieux d'utiliser un CHAR(40). Mais parce que SHA1 ne renvoit que 4 bits par caractères, nous n'avons besoin que de 80 bits, soit à la longueur standard de 8 bits par caractère, une chaine de caractère de 20 de longueur. La meilleure solution est dunc d'utiliser un BINARY(20) couplé avec la fonction UNHEX pour convertir la chaine de caractère. Pour une table de un million d'entrée, CHAR(40) prendre 64.57Mo, BINARY(20) ne prend que 44.56Mo.

Retour à l'accueil

Une production In Media Veritas | Réseau : md5.fr - sha1.fr - sha256.fr - sha512.fr - bcrypt.fr - htpasswd.fr