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
Oi oispa .NET versio...
toimiiko vb kolmosessa?
hups
Ei toiminu.
Tulosti vain:
33,89,27,100,108,127,41,241,29,50,203,92,213,12,
Tuohan se tarkistussumma on, byteinä
Mistä sä löydät noi koodit tuskin omasta päästä, vai?