Benutzer-Werkzeuge

Webseiten-Werkzeuge


k6:k6.10:k6.10.1:start

6.10.1 Hash-Wert einer Datei berechnen

Im vorliegenden Projekt können Sie im Dialog eine Datei auswählen und den speziellen SHA256-Hash-Wert der Datei berechnen. Als Erweiterung können Sie den berechneten Hash-Wert mit dem bekannten Hash-Wert der ausgewählten Datei vergleichen – wenn Sie ihn kennen.

Als Beispiel wird Ihnen gezeigt, wie Sie die Integrität eines ISO-Images prüfen, dass bereits im Download-Verzeichnis liegt.

B0

Abbildung 6.10.1.1: Prüfung Integrität ISO-Images

Für die Datei linuxmint-18.3-cinnamon-64bit.iso können Sie den Hash-Wert der Datei sha256sum.txt entnehmen, die Sie sich über den folgenden Befehl in das Download-Verzeichnis kopieren:

wget https://ftp.heanet.ie/mirrors/linuxmint.com/stable/18.3/sha256sum.txt -O $HOME/Downloads/sha256sum.txt

Diese Zeile aus dem Inhalt der Datei ist wichtig:

...
ecebdf9ac4697b6c2d7feffd1bc5430641bca67c7df122fa2914824dc8844b3a *linuxmint-18.3-cinnamon-64bit.iso
...

Tragen Sie zuerst den Hash-Wert der Version Mint 18.3 in das gelbe Textfeld ein. Wählen Sie dann im Dialog die passende ISO-Datei im Download-Verzeichnis aus. Der Vergleich von berechnetem SHA256-Hash-Wert und dem Wert von der Mint-Website in der Datei sha256sum.txt war erfolgreich!

Beachten Sie, dass die Berechnung des Hash-Wertes bei einer 2GB großen Datei beispielsweise durchaus einige Sekunden dauern kann!

6.10.1.1 Exkurs

Für die Prüfung der Authentizität liefert die gleiche Quelle mit diesem Befehl in einer Konsole:

wget https://ftp.heanet.ie/mirrors/linuxmint.com/stable/18.3/sha256sum.txt.gpg -O \ 
$HOME/Downloads/sha256sum.txt.gpg

die Datei sha256sum.txt.gpg. Mit folgendem Befehl wird geprüft, ob die Datei sha256sum.txt korrekt von Mint unterschrieben ist:

hans@mint-183 ~/Downloads $ gpg --verify sha256sum.txt.gpg sha256sum.txt
gpg: Unterschrift vom Mi 13 Dez 2017 17:16:15 CET mittels RSA-Schlüssel ID A25BAE09
gpg: Korrekte Unterschrift von »Linux Mint ISO Signing Key <root@linuxmint.com>«
gpg: WARNUNG: Dieser Schlüssel trägt keine vertrauenswürdige Signatur!
gpg:          Es gibt keinen Hinweis, daß die Signatur wirklich dem vorgeblichen Besitzer gehört.
Haupt-Fingerabdruck  = 27DE B156 44C6 B3CF 3BD7  D291 300F 846B A25B AE09
hans@mint-183 ~/Downloads $ 

Die Warnung „Es gibt keinen Hinweis, daß die Signatur wirklich dem vorgeblichen Besitzer gehört.“ ist berechtigt – hier die schnelle Überprüfung in einer Konsole für die o.a. angegebene ID:

hans@mint-183 ~/Downloads $ gpg --list-key --with-fingerprint A25BAE09
pub   4096R/A25BAE09 2016-06-07
      Schl.-Fingerabdruck = 27DE B156 44C6 B3CF 3BD7  D291 300F 846B A25B AE09
uid   Linux Mint ISO Signing Key <root@linuxmint.com>

6.10.1.2 Projekt – Quelltext

Der Quelltext wird vollständig angegeben:

' Gambas class file
' A hash process generates a number from a string in a file.
 
Public sOriginalText As String
Private sFilePath As String = User.Home
 
Public aDigestList As String[]
Public aCipherList As String[]
 
Public Sub Form_Open()
  FMain.Center()
  FMain.Caption = "Calculation of SHA256 hash value for files"
  FMain.Resizable = False    
  txaText.Wrap = True
  DigestSupportedSHA256()
End
 
Public Sub DigestSupportedSHA256()
  txaText.Clear()
  If Digest.IsSupported("SHA256") = True Then
     txaText.Text = "\nThe system supports 'SHA256'!"
  Else
     txaText.Text = "\nThe system does not support 'SHA256'!"
  Endif
End
 
Public Sub btnDigestFromFile_Click()
 
  Dim sPath As String
  Dim vRawData As Variant
 
  Dialog.Title = ("Select a file!")
  Dialog.Path = sFilePath
  If Dialog.OpenFile() Then Return
  sPath = Dialog.Path
 
  txaText.Clear()
  Inc Application.Busy
    vRawData = Digest["SHA256"].Hash(File.Load(sPath)) ' Attention! Highly compressed source code
  Dec Application.Busy
 
  txaText.Clear()
  txaText.Text = "\nSHA256 hash for the file '" & File.Name(Dialog.Path) & "'\n\n" 
  txaText.Text &= "Format hexadecimal:" & gb.NewLine
  txaText.Text &= StringToHex(vRawData) & gb.NewLine
 
  If txbCheck.Text Then
     If StringToHex(vRawData) = txbCheck.Text Then
        txaText.Text &= Subst("\n&1 '&2' &3", ("The check of the file"), File.Name(sPath), ("was successful!"))
     Else
        txaText.Text &= Subst("\n&1 '&2' &3", ("The check of the file"), File.Name(sPath), ("was *not* successful!"))
     Endif
  Endif
 
  Catch
    Message.Error(sPath & " not available.\n" & Error.Text)
 
End
 
Private Function StringToHex(sString As String) As String
 
  Dim iByte As Byte
  Dim sResult As String
 
  For Each iByte In Byte[].FromString(sString)
    sResult &= Lower$(Hex$(CLong(iByte), 2))
  Next
 
  Return sResult
 
End 
 
Public Sub btnClose_Click()
  FMain.Close()
End

Download

Wir verwenden Cookies, um unser Internetangebot optimal zu gestalten. Durch weitere Nutzung dieser Webseite stimmen Sie der Verwendung von Cookies zu. Informationen zu Cookies erhalten Sie in unserer Datenschutzerklärung
k6/k6.10/k6.10.1/start.txt · Zuletzt geändert: 24.09.2018 von honsek

Seiten-Werkzeuge