Anzeige

 Md5 per VBA


#1
Hallo ich hab mal wieder Fragen über Fragen:

Ich hab zwar noch einen aktiven Post ich erstelle jedoch einen Neuen da es sich um ein anderes Thema handelt ;) ( hoffe das ist ok )


Also ich würde gerne einen string md5 verschlüsseln und diesen dan mit einem bereits verschlüsselten md5 string vergleichen

Den zweiten teil sehe ich nicht als Problem an jedoch konnte ich bei VBA keine Funktion finden ;(

fals ich nichts übersehen haben sollte und dies wirklich nicht so einfach ist würde ich gerne wissen ob es ein externes programm gibt das ich dan per VBA aufrufen könnte ( Ich stell mir das dan ca so vor --> md5.exe test string <-- )

ich hoffe das ich nicht mal wieder zu abstrakt denke und ihr mir helfen könnt ;)
 

DrSoong

Iss was, Doc!
#3
Für den Fall, dass dich die Arbeitsweise interessiert, hier eine MD5-Implementierung in VBA ohne zusätzliche DLL. Hat aber den Nachteil, dass es doch etwas langsamer ist. Einfach das Modul (nach dem runterladen in .bas umbenennen) in dein Projekt importieren, der Aufruf erfolg über
Visual Basic:
Hash = MD5_string(String)

Der Doc!
 

Anhänge

#4
Hallo DrSoong,


Ich wolte gerade deine Variante ausprobieren :

- Md5.bas ins Projekt importiert
- Neue Form erstellt
- Eine TextBox1
- Ein CommandButton1
- Ein Label1

Code:
Private Sub CommandButton1_Click()
Label1.Caption = MD5_string(TextBox1)
End Sub


Mit dem Ergebniss :


" Fehler beim Kompilieren: Variable nicht definiert "

Code:
.....
    state(3) = &H10325476
    index = 0
    For i = 0 To nBlks - 1
        Call md5_transform(state, abMessage, index)
        index = index + MD5_BLK_LEN
        pPercent = Int(i / (nBlks - 1) * 60)
-->        frmMain.pb1.value = 40 + pPercent
    Next
    partLen = mLen Mod MD5_BLK_LEN
    index = nBlks * MD5_BLK_LEN
    For i = 0 To partLen - 1
.....

hab ich irgendwas vergessen ?
 

Sinac

Erfahrenes Mitglied
#5
Und auch hier wieder wie schon so oft besprochen:

MD5 ist kein Verschlüsselungsalgorithmus - es wird nichts verschlüsselt!
 

DrSoong

Iss was, Doc!
#9
Sorry, hatte vergessen dass ich auch dort eine Progressbar-Aktualisierung eingebaut hatte (habe die anderen Verweise auf meine Steuerelemente entfernt). Wird nicht wieder vorkommen, werd mich zur Strafe für meine Nachlässigkeit 10 mal mit der Neunschwänzigen geißeln. ;)


Der Doc!
 
#11
ist im Prinzip einfach, du lädst deine Datei einfach in einen String rein:
Visual Basic:
Dim iFile As Integer, sDatei As String, sName As String
sName = "C:\DeinDatei.exe" 'Hier den Namen deiner Datei rein
iFile = FreeFile 'Nächste freie Dateinummer
sDatei = Space(FileLen(sName)) 'Platz festlegen
Open sName For Binary As iFile 'Datei binär öffnen
 Get #iFile, , sDatei 'und auslesen
Close iFile
Hash = MD5_string(sDatei) 'Hash erzeugen

Der Doc!
 

Pitsan

Grünschnabel
#13
Hallo,

ich bin noch neu hier,

... und habe auch ein paar Fragen, bei denen ich Hilfe brauchen könnte.

Ich wolte gerade deine Variante ausprobieren :

- Md5.bas ins Projekt importiert
- Neue Form erstellt
- Eine TextBox1
- Ein CommandButton1
- Ein Label1

Code:
Private Sub CommandButton1_Click()
Label1.Caption = MD5_string(TextBox1)
End Sub


Mit dem Ergebniss :


" Fehler beim Kompilieren: Variable nicht definiert "

Code:
.....
    state(3) = &H10325476
    index = 0
    For i = 0 To nBlks - 1
        Call md5_transform(state, abMessage, index)
        index = index + MD5_BLK_LEN
        pPercent = Int(i / (nBlks - 1) * 60)
-->        frmMain.pb1.value = 40 + pPercent
    Next
    partLen = mLen Mod MD5_BLK_LEN
    index = nBlks * MD5_BLK_LEN
    For i = 0 To partLen - 1
.....

hab ich irgendwas vergessen ?
... Die Fehlermeldung habe ich auch bekommen, weiss jemand was geändert wurde, damit der Code arbeitet?

Vielen Dank im Voraus

Pitsan
 

DrSoong

Iss was, Doc!
#14
Wenn du den Thread weiter gelesen hast wirst du bemerkt haben, dass ich eine Progressbar eingebaut hatte und diese Zeile leider aus Versehen drinnen geblieben ist. Lösch sie einfach raus (kA ob noch eine weitere drinnen ist - prüf den Code einfach nach frmMain.pb1) und das ganze funktioniert.


Der Doc!
 
#15
Auch nach nunmehr fast 4 vollen Jahren: Gesucht, gefunden und für gut befunden.

Danke Doc.

(sorry, normal hole ich so alte Threads nimmer hoch - aber der Post vom Doc löste grad so genial einfach mein Problem)
 
#16
Hallo, ich hole den Thread auch nochmal hoch.
Ich muss in einer CSV-Datei mit Adressen eine Spalte mit MD5 umwandeln, damit der Import funktioniert. Ich habe von allem, was hier steht Null Ahnung. Dennoch habe ich es geschaft, den Code einzubinden. Allerdings mit dieser Progressbar, die zum Fehler führt.
Wie man etwas auskommentiert habe ich auch herausgefunden.
Nun weiß ich nur nicht, welchen Bereich ich da auskommentieren muss. Meine Versuche bisher sind nicht geglückt.

Könnte mir jemand die Zeilen posten, die auskommentiert werden müssen?
LG Emily
 

Yaslaw

n/a
Moderator
#17
Du hast den Code übernommen und irgendwie angepasst.
Zeig doch mal was du hast und wo der Fehler auftritt.
Um das herauszufinden gibt es ganz viele Anleitungen zum Thema Debug unter VBA
 
#18
Hallo,
ich hatte am Wochenende die o.g. Meldung zum Kompilieren. Den Code aus der txt habe ich unverändert verwendet. Im weiteren verlauf steht, dass diese Progressbar auskomentiert werden muss. Daran scheitere ich nun. Denn dann scheint das Ganze ja zu funktionieren.

Ich wollte es eben nochmal nachstellen und bin wie folgt vorgegangen:

Alt F11
Einfügen -> Modul
Inhalt der txt hineinkopiert
gespeichert als csv Trennzeichen getrennt

im Arbeitsblatt folgendes in eine Zelle geschrieben: =MD5_string(c4)
(in c4 steht das Wort das umgewandelt werden soll)

es erscheint #NAME?

Die andere Fehlermeldung erhalte ich nun nicht mehr....

LG

PS: Ich habe schon über eine Woche das Web nach Anleitungen durchsucht. Aber ich finde überhaupt nichts, was ich annähernd verstehen würde. Mir fehlen da einfach die Kenntnisse. Dieser Beitrag erschien mir wenigstens halbwegs umsetzbar.
 

Yaslaw

n/a
Moderator
#20
Du hast ein Modul hineinkopiert, das zum Importieren gedacht gewesen wäre.
Die Erste Zeile ist eine Versteckte Zeile des Moduls, dass den Modulnamen angibt.
Dein Code hat jetzt eigentlich 2 solche Zeilen. In der ersten steht Modul1 als vb_name. Diese siehtst du nicht was richtig ist. Die Zweite ist mit MD5 als vb_name. Diese kommt vom kopieren. Diese Zeile kannst du löschen. Dann sollte mindestens dieser Fehler weg sein
 
Anzeige

Neue Beiträge

Anzeige