Mittwoch, 25. April 2012

yab - Hash- Werte ermitteln

SO, in meinem heutigen Beitrag möchte ich Euch zeigen wie man Hash- Werte von beliebigen Dateien, mit "yab"  ermitteln kann. Leider bietet uns "yab" keine direkte Unterstützung für diese Funktionen an, aber wofür gibt es denn den "system$"- Befehl.

Das erste Beispiel zeigt wie man den "MD5- Hash" einer Datei ermitteln kann, daß zweite Beispiel zeigt wie man den "SHA1- Hash" einer Datei ermittelt. Beide Sub- Routinen sind recht kurz gehalten und bedürfen keiner großen Erläuterung. Die wichtigsten Dinge sind bereits im Quellcode vermerkt.

Noch ein kleiner Tipp am Rande. Da "yab" auch nicht die Möglichkeit bietet entsprechende Hash- Werte von beliebigen Strings zu erstellen, könnte man die Sub- Routinen dahingehend abändern. Denn erstellt man selbst eine Datei, schreibt in diese den gewünschten String und ermittelt dann den benötigten Hash- Wert, erhält man das gleiche Ergebnis das eine entsprechende String- Funktion liefern würde.


Der Aufruf der beiden Beispiel- Sub- Routinen kann z.B. in Folgender Form erfolgen. Anschließend wird der entsprechende Hash- Wert zurückgegeben. Sollte die angegebene Datei nicht gefunden werden, wird "file not found" zurückgegeben.


print _GetSHA1$("/boot/home/Desktop/textfile")


oder entsprechend


print _GetMD5$("/boot/home/Desktop/textfile")



export sub _GetSHA1$(Filename$)

  // Variablen definieren
 
  local SystemInput$
  local NumberOfTokens
  local Result$
  
  dim Position$(1)
 
  // prüfen ob die angegebene Datei existiert
  if (not system("test -e " + Filename$)) then
  
    // den Befehl "SHA1SUM" ausführen und Ausgabe in SystemInput$ speichern
    SystemInput$ = system$("sha1sum " + Filename$)
 
    // SystemInput$ in die einzelnen Bestandteile zerlegen
    NumberOfTokens = split(SystemInput$, Position$(), " ")
 
    // an Position 1 steht die gewünschte Information
    Result$ = Position$(1)
  
  else
 
    Result$ = "file not found"
  
  endif

  return Result$

end sub




export sub _GetMD5$(Filename$)

  // Variablen definieren
  local SystemInput$
  local NumberOfTokens
  local Result$
  
  dim Position$(1)
 
  // prüfen ob die angegebene Datei existiert
  if (not system("test -e " + Filename$)) then
  
    // den Befehl "MD5SUM" ausführen und Ausgabe in SystemInput$ speichern
    SystemInput$ = system$("md5sum " + Filename$)
 
    // SystemInput$ in die einzelnen Bestandteile zerlegen
    NumberOfTokens = split(SystemInput$, Position$(), " ")
 
    // an Position 1 steht die gewünschte Information
    Result$ = Position$(1)
  
  else
 
    Result$ = "file not found"
  
  endif

  return Result$

end sub



(getestet mit Haiku R1 Alpha 3 und yab 1.5)


Keine Kommentare:

Kommentar veröffentlichen