cauroir
Messages postés27Date d'inscriptionvendredi 18 octobre 2002StatutMembreDernière intervention 2 août 2007
-
29 juil. 2004 à 10:30
Philippe734
Messages postés308Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention15 juin 2015
-
22 août 2010 à 11:24
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Philippe734
Messages postés308Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention15 juin 20151 22 août 2010 à 11:24
Je reviens avec question. Je n'ai pas réussis à ajouter l'implémentation de ta source pour calculer MD5 d'un fichier.
Sur une autre source, la procédure permettant de retourner le hash md5 est le code ci-dessous, mais je n'ai pas réussis à l'adapter pour ton code. Merci de nous indiquer comment calculer le hash MD5 d'un fichier avec ta source.
' fonction publique d'une autre source qui retourne le MD5 d'un fichier.
Public Function DigestFileToHexStr(Filename As String) As String
Dim fic As Integer
Dim k As Long
fic = FreeFile()
Open Filename For Binary Access Read As #fic
MD5Init
Do While Not EOF(fic)
Get #fic, , ByteBuffer
If Loc(fic) < LOF(fic) Then
ByteCounter = ByteCounter + 64
MD5Transform ByteBuffer
End If
k = k + 1
RaiseEvent InProgress(k)
Loop
ByteCounter = ByteCounter + (LOF(fic) Mod 64)
Close #fic
MD5Final
DigestFileToHexStr = LongToHex(State(1)) & LongToHex(State(2)) & LongToHex(State(3)) & LongToHex(State(4))
End Function
Je pose cette question, car l'autre source n'est pas complète. Le MD5 calculé est mauvais pour les fichiers supérieurs à 50 Mo.
Philippe734
Messages postés308Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention15 juin 20151 21 août 2010 à 17:35
Bravo pour avoir réalisé le portage et merci.
GeneticW
Messages postés34Date d'inscriptionsamedi 3 juin 2006StatutMembreDernière intervention23 avril 2011 20 févr. 2010 à 18:17
Cela m'a pris quelques heures pour debuger ce program and trouver pourquoi il crashait le Ide de Vb6.
il semblait evident que le probleme provenait d'une corruption memoire parce que le programme crashait a l'unload event.
le probleme vient de cette ligne:
Call MD5_zeromem(m_context, 98)
Il y a 2 facon de faire cela de la bonne facons:
1. Sans utiliser de function externe:
declare:
Private ZeroMem As TMD5Context
et a la place de:
'Call MD5_zeromem(m_context, 98)
tu met:
m_context = ZeroMem
maintenant,.... si tu insistes vraiment pour utiliser MD5_zeromem().
NE JAMAIS... JAMAIS utiliser de valeurs hardcoded dans une function externe en passant un parametre definie par l'utilisateur. C'est du suicide.
et si vous savez comment calculer ceci,
m_context est 88 bytes de long, pas 98.
TMD5Context est definit comme suit:
Private Type TMD5Context
State(0 To 3) As Long ' 4 array * long (4 bytes)=16
Count(0 To 1) As Long ' 2 array * long (4 bytes)= 8
Buffer(0 To 63) As Byte '64 array * byte (1 byte) =64
End Type
64+8+16 =88
merci pour la source, j'ai eu du plaisir.
maitredede
Messages postés153Date d'inscriptionvendredi 9 août 2002StatutMembreDernière intervention18 septembre 2009 2 août 2004 à 09:37
Joli travail, mais dans mon appli, j'ai un problème ca ne semble pas venir de MD5, mais je demande quand même puisqu'il n'est là que depuis que j'ai mis le md5...
Quand je termine mon application avec le mot-clé End, mon appli continue de tourner dans VB...
Ensuite, quand je compile et que j'exécute mon programme, il plante dans une sub où j'utilise le md5... ("a.exe a rencontré un problème et doit fermer"...)
cauroir
Messages postés27Date d'inscriptionvendredi 18 octobre 2002StatutMembreDernière intervention 2 août 2007 29 juil. 2004 à 10:30
Joli travail, je vais tester.
J'avais recupere MD5 et SHA256 sur un site americain en VB6 si tu veux.
22 août 2010 à 11:24
Sur une autre source, la procédure permettant de retourner le hash md5 est le code ci-dessous, mais je n'ai pas réussis à l'adapter pour ton code. Merci de nous indiquer comment calculer le hash MD5 d'un fichier avec ta source.
' fonction publique d'une autre source qui retourne le MD5 d'un fichier.
Public Function DigestFileToHexStr(Filename As String) As String
Dim fic As Integer
Dim k As Long
fic = FreeFile()
Open Filename For Binary Access Read As #fic
MD5Init
Do While Not EOF(fic)
Get #fic, , ByteBuffer
If Loc(fic) < LOF(fic) Then
ByteCounter = ByteCounter + 64
MD5Transform ByteBuffer
End If
k = k + 1
RaiseEvent InProgress(k)
Loop
ByteCounter = ByteCounter + (LOF(fic) Mod 64)
Close #fic
MD5Final
DigestFileToHexStr = LongToHex(State(1)) & LongToHex(State(2)) & LongToHex(State(3)) & LongToHex(State(4))
End Function
Je pose cette question, car l'autre source n'est pas complète. Le MD5 calculé est mauvais pour les fichiers supérieurs à 50 Mo.
21 août 2010 à 17:35
20 févr. 2010 à 18:17
il semblait evident que le probleme provenait d'une corruption memoire parce que le programme crashait a l'unload event.
le probleme vient de cette ligne:
Call MD5_zeromem(m_context, 98)
Il y a 2 facon de faire cela de la bonne facons:
1. Sans utiliser de function externe:
declare:
Private ZeroMem As TMD5Context
et a la place de:
'Call MD5_zeromem(m_context, 98)
tu met:
m_context = ZeroMem
maintenant,.... si tu insistes vraiment pour utiliser MD5_zeromem().
NE JAMAIS... JAMAIS utiliser de valeurs hardcoded dans une function externe en passant un parametre definie par l'utilisateur. C'est du suicide.
ceci fonctionne:
Call MD5_zeromem(m_context, len(m_context))
et si vous savez comment calculer ceci,
m_context est 88 bytes de long, pas 98.
TMD5Context est definit comme suit:
Private Type TMD5Context
State(0 To 3) As Long ' 4 array * long (4 bytes)=16
Count(0 To 1) As Long ' 2 array * long (4 bytes)= 8
Buffer(0 To 63) As Byte '64 array * byte (1 byte) =64
End Type
64+8+16 =88
merci pour la source, j'ai eu du plaisir.
2 août 2004 à 09:37
Quand je termine mon application avec le mot-clé End, mon appli continue de tourner dans VB...
Ensuite, quand je compile et que j'exécute mon programme, il plante dans une sub où j'utilise le md5... ("a.exe a rencontré un problème et doit fermer"...)
29 juil. 2004 à 10:30
J'avais recupere MD5 et SHA256 sur un site americain en VB6 si tu veux.