Quel genre de hachage de mot de passe/le cryptage est-ce?
En essayant de trouver ce genre de hachage/cryptage c'est dans un SQL db. Nous voulons créer une application pour faire de réinitialisation de mot de passe mais je ne peux pas pour la vie de me trouver comment ils sont à l'origine de cette valeur.
Voici plusieurs exemples
{enc:1}gdyb21LQTcIANtvYMT7QVQ==
{enc:1}ZEImYhrd/Ot/LcewJCFdMw==
{enc:1}+IOSBzegAx7nSytO1J3GEw==
{enc:1}6ULa1IFMxavY7SE66K3UDg==
{enc:1}UEFeGim2M8d0Iee7ejFRUw==
{enc:1}RjqL5rXOBpqJAKPjYkwLtw==
{enc:1}V/PEslecyYxFki03H4ctAQ==
{enc:1}VDEm9QmD+L7tsqcPz/S9XQ==
{enc:1}YkQuEPpL6dRfDLwKMEVMMg==
{enc:1}86rG96EP7T3tx9e8C7513g==
{enc:1}xvSwvsmkgwtXwVISvg7mJQ==
{enc:1}KjCF0RD4tcUGEP4Bpafw5A==
{enc:1}z9pGrdm4QAoomrFCJCXQIQ==
{enc:1}yhLv0HeW90FENKJjV9Nb+g==
{enc:1}EtYMl5FOW+zdpVvWsIj3Rw==
La fuite
Je suis d'accord, et la longueur de 22 implique c'est un 16 bits de hachage, probablement MD5 depuis qui est couramment utilisé pour les mots de passe. Donc, il est probablement encodée en base64, non salé, hachage MD5.
==
est un don mort de l'encodage base64.Je suis d'accord, et la longueur de 22 implique c'est un 16 bits de hachage, probablement MD5 depuis qui est couramment utilisé pour les mots de passe. Donc, il est probablement encodée en base64, non salé, hachage MD5.
OriginalL'auteur JD Roberson | 2012-04-25
Vous devez vous connecter pour publier un commentaire.
Prenons part:
La
{enc:1}
partie est susceptible d'être versioning de certaine forme. Cela est raisonnablement commun de sorte que vous pouvez mettre à niveau quel que soit le hachage/algorithme de chiffrement que vous utilisez au fil du temps. Chaque valeur identifie l'algorithme utilisé pour produire de la table de hachage, si la mise en œuvre décide d'utiliser une approche différente, qu'il serait de savoir à valider un mot de passe à l'aide de la première version, mais elle pourrait remplacer la{enc:1}
avec{enc:2}
ou que ce soit, avec la nouvelle forme de la table de hachage.Le reste est en base64 et c'est le 24 caractères se terminant par ==, ce qui signifie que la valeur d'origine est de 16 octets.
C'est donc un 16 octets (128 bits) de hachage d'une certaine sorte, avec une gestion des versions préfixe. C'est à peu près tout ce que nous pouvons dire... il pourrait être tout de hachage de 128 bits, ou éventuellement 128 bits de plus de hachage (bien que vous auriez à me demander pourquoi ils ont jeté des données).
Que vous pourriez effectuer d'autres tests si vous pouvez créer vos propres utilisateurs avec des mots de passe. Par exemple, de faire deux utilisateurs avec le même mot de passe jusqu'à la fin avec le même hash? Si pas, si vous changez de mot de passe de X à mot de passe Y puis revenir au mot de passe de X pour un utilisateur unique, ne que obtenir le même hash? (Il n'est pas évident de sel dans la valeur, bien que le nom d'utilisateur peut être utilisé comme le sel.)
OriginalL'auteur Jon Skeet