Kirjautuminen

Haku

Tehtävät

Koodit: VB.NET: MD5-tiiviste

Kirjoittaja: tnb

Kirjoitettu: 21.01.2004 – 21.01.2004

Tagit: koodi näytille, vinkki

MD5 on 128-bittinen tarkistussumma, jota käytetään paljastamaan, onko esim. tiedoston sisältö muuttunut (esim. tahallinen väärennös tai tiedonsiirtovirhe).
Toinen MD5 käyttökohde on digitaalinen allekirjoitus: Kun salaa yksityisellä RSA-avaimellaan sekä nimensä että MD5 summan allekirjoitettavasta tekstistä samaan tiedostoon, saadaan jo aikaiseksi digitaalinen allekirjoitus. Allekirjoituksen voi tarkistaa avaamalla allekirjotuksen julkisella RSA avaimella ja vertaamalla MD5 arvoa kiistellyn asiakirjan MD5 arvoon.

Oheinen ohjelma demoaa MD5 summan laskentaa tiedostolle.
Kekeiset lausekkeet ovat:
Dim md5 As New MD5CryptoServiceProvider
MD5_ByteTaulukko=md5.ComputeHash(data) 'data on byte taulukko

Tee: textbox1 ja 2, button1 ja 2

' Tämä aivan alkuun ennen formia
Imports System.Security.Cryptography
Imports System.IO

Button 2

'näyttää MD5 summan pilkutettuna 8-bit lukuina
Dim filename As String = TextBox2.Text ' tiedoston nimi
If File.Exists(filename) = False Then Return 'palaa jos ei tiedostoa
Dim md5 As New MD5CryptoServiceProvider 'MD5 luokasta instanssi
Dim fs = New FileStream(filename, FileMode.Open, FileAccess.Read) 'tiedosto auki
Dim r As New BinaryReader(fs) ' lukija tiedostolle
Dim data() As Byte 'paikka mihin tiedoto luetaan byteinä
Dim len As Integer = fs.length ' tiedoston pituus
'luetaan tiedosto ja lasketaan MD5
data = r.ReadBytes(len) ' tässä luetan kerralla tiedosto bytetaulukkoon
TextBox1.Text = ByteToAsciiCodes(md5.ComputeHash(data)) 'summan laskenta
fs.close()
r.Close()
md5.Clear()

button1

'browse file open
Dim result As DialogResult = OpenFileDialog1.ShowDialog()
If (result = DialogResult.OK) Then
    TextBox2.Text = OpenFileDialog1.FileName
End If

Apuohjelma

Function ByteToAsciiCodes(ByVal Matrix() As Byte) As String
    'muuttaa byte metriisin vastaavaksi pilkutetuksi ascii-luku tekstiksi
    Dim i As Long
    Dim mat As Long = (UBound(Matrix))
    ByteToAsciiCodes = ""
    For i = 0 To mat
        ByteToAsciiCodes = ByteToAsciiCodes + CStr(Matrix(i)) + ","
    Next
    ByteToAsciiCodes = (ByteToAsciiCodes.TrimEnd(","))
End Function

Kommentit

ZcMander [22.01.2004 13:16:47]

#

Oi oispa .NET versio...

tuomas [22.01.2004 14:13:09]

#

toimiiko vb kolmosessa?

tuomas [22.01.2004 14:17:54]

#

hups

Niko [22.01.2004 18:15:55]

#

Ei toiminu.
Tulosti vain:
33,89,27,100,108,127,41,241,29,50,203,92,213,12,2,1

tnb [22.01.2004 19:20:29]

#

Tuohan se tarkistussumma on, byteinä

TuGi [29.01.2004 17:49:35]

#

Mistä sä löydät noi koodit tuskin omasta päästä, vai?

Kirjoita kommentti

Muista lukea kirjoitusohjeet.
Tietoa sivustosta