Dans ASP, nous avons utilisé la fonction MD5 dans ASP utilisée par le forum Rudong.com, etc. La chaîne cryptée par la fonction MD5 est la suivante :
1165d25d8cd021d5
Et dans Asp.Net la méthode suivante :
System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(password.Text,"MD5")
Le résultat du cryptage MD5 est :
12C403B91165D25D8CD021D5F9B5BB7F
La raison est que la fonction MD5 dans ASP utilise les 9e au 25e bits de la valeur de hachage MD5 32 bits, puis la change en minuscules comme texte chiffré. Sachant cela, les résultats ASP.NET peuvent être utilisés pour comparer les chaînes de mots de passe dans des bases de données plus anciennes avec un peu de traitement.
Dans la fonction MD5 d'ASP, lignes 353 et 354 :
'MD5 = LCase(MotVersHex(a) & MotVersHex(b) & MotVersHex(c) & MotVersHex(d))
MD5=LCase(WordToHex(b) & WordToHex(c)) 'Je recadre ceci pour qu'il corresponde au mot de passe de la base de données de 16 octets :D
La première phrase consiste à prendre tout le texte chiffré de 32 bits, et la deuxième phrase consiste à prendre les 9e au 25e bits du milieu comme texte chiffré de 16 bits.
En ce qui concerne vb.net, le problème revient. Dans vb.net, l'espace de noms System.Web.Security ne peut pas être utilisé et la méthode simple ci-dessus ne peut pas être utilisée pour le cryptage MD5. J'ai donc écrit la fonction suivante pour le gérer :
VB.NET :
'Fonction de cryptage MD5
Fonction publique partagée MD5 (ByVal strSource As String, ByVal Code As Int16) As String
'Le texte original du mot de passe codé en ascii est utilisé ici. Si vous souhaitez utiliser des caractères chinois comme mot de passe, vous pouvez utiliser UnicodeEncoding, mais il sera incompatible avec la fonction MD5 dans ASP.
Dim dataToHash As Byte() = (New System.Text.ASCIIEncoding).GetBytes(strSource)
Dim valeur de hachage As Byte() = CType(System.Security.Cryptography.CryptoConfig.CreateFromName("MD5"), System.Security.Cryptography.HashAlgorithm).ComputeHash(dataToHash)
Dim i comme entier
Sélectionnez le code du cas
Cas 16 'Sélectionnez le résultat du cryptage des caractères 16 bits
Pour i = 4 à 11
MD5 + = Hex (valeur de hachage (i)).ToLower
Suivant
Cas 32 'Sélectionnez le résultat du cryptage des caractères 32 bits
Pour i = 0 à 15
MD5 + = Hex (valeur de hachage (i)).ToLower
Suivant
Case Else "Lorsque le code est erroné, renvoie la chaîne entière, c'est-à-dire les caractères 32 bits
Pour i = 0 À hashvalue.Length - 1
MD5 + = Hex (valeur de hachage (i)).ToLower
Suivant
Fin de la sélection
de la fonction de fin
: AndyDavis BLOG