Hallo,
ich benötige in einem Programm zur Identifizierung von Textblöcken einen Hash-Wert und verwende hierzu die @Password Funktion, die ich über Evaluate aufrufe.
Das hat soweit funktioniert, bis ich bemerkte, dass @Password auf ca. 2000 Zeichen beschränkt ist.
Meine Idee bestand nun darin, längere Zeichenketten in einzelne Blöcke aufteilen und die @Password-Funktion auf die einzelnen Blöcke anwenden.
Bei wiederholtem Aufruf der @Password Funktion in einer Schleife liefert Evaluate aber nicht mehr nur den Hash-Wert in der Form eines 32-zeichen langen Hex-Wertes (ABCDEF.....) zurück, der Ergebniswert besteht aus dem Hex-Wert und dem Rest der übergebenen Zeichenkette.
Das unten stehende Beispiel liefert den Hash-Wert gefolgt von 40*"x" zurück
| Sub Initialize |
| Const Blocksize = 40 |
| Dim i As Integer |
| |
| Dim s As String |
| Dim strHash As String |
| Dim teil As String |
| Dim Ausfuehren As String |
| Dim tmp As variant |
| |
| s = String$(100,"x") |
| |
| strHash="" |
| For i=0 To Len(s) Step Blocksize |
| teil = strHash + Mid$(s,i+1,Blocksize) |
| Ausfuehren = {@Password("} + teil + {")} |
| tmp = Evaluate(Ausfuehren) |
| strHash = tmp(0) |
| Next |
| Print "Ergebnis: " strHash |
| End Sub |
Woran kann das liegen?
Danke & Gruß,
Gregor