web-dev-qa-db-fra.com

Pourquoi tant de chaînes hachées et chiffrées se terminent-elles par un signe égal?

Je travaille en C # et MSSQL et comme vous vous en doutez, je stocke mes mots de passe salés et hachés.

Quand je regarde le hachage stocké dans une colonne nvarchar (par exemple le fournisseur d'adhésion aspnet out the box). J'ai toujours été curieux de savoir pourquoi les valeurs générées de sel et de hachage semblent toujours se terminer par un ou deux signes égaux.

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?

65
Liath

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 pour rendre la longueur (nombre d'octets) divisible par trois. Wikipedia l'explique assez bien: http://en.wikipedia.org/wiki/Base64 .

96
svenslaggare

Serait-ce un rembourrage d'encodage Base 64?

La séquence '==' indique que le dernier groupe ne contenait qu'un octet, et '=' indique qu'il contenait deux octets. L'exemple ci-dessous illustre comment la troncature de l'entrée de l'ensemble de la citation ci-dessus modifie le remplissage de sortie:

http://en.wikipedia.org/wiki/Base64#Output_padding

37
Jaydee