Je travaille en C # et MSSQL et, comme vous vous en doutez, je stocke mes mots de passe salés et hachés.
Lorsque je regarde le hachage stocké dans une colonne nvarchar (par exemple, le fournisseur d’adhésion aspnet à la livraison). J'ai toujours été curieux de savoir pourquoi les valeurs générées de Salt et Hash semblent toujours se terminer par un ou deux signes d'égalité.
J'ai vu des choses similaires en travaillant avec des algorithmes de chiffrement, est-ce une coïncidence ou y a-t-il une raison à cela?
hash("my password")
produit le tableau[1,2,3,4,5]
et que je dois stocker ces valeurs dans une base de données, il existe des choix pires que de stocker la chaîneAQIDBAU=
(Bien sûr, si la fonction de hachage utilisée produit déjà une chaîne, il semble un peu ridicule de l'encoder ensuite en Base64. )Réponses:
Ces chaînes hachées sont (généralement?) Codées au format Base64 et le signe égal est utilisé pour remplir la chaîne afin de rendre la longueur (nombre d'octets) divisible par trois. Wikipedia l'explique assez bien: http://en.wikipedia.org/wiki/Base64 .
la source
Pourrait-il s'agir d'un remplissage de codage en base 64?
La séquence '==' indique que le dernier groupe ne contenait qu'un octet, et '=' qu'il contenait deux octets. L'exemple ci-dessous montre comment le fait de tronquer l'entrée de l'ensemble de la citation ci-dessus modifie le remplissage de la sortie:
http://en.wikipedia.org/wiki/Base64#Output_padding
la source