Minua on kiinnostanut (toimivat?) salasanasysteemit jo pienestä pitäen, mutta silti olen saanut aikaan vain epämääräisiä söhellyksiä jotka eivät toimi. (Tämä siis toimii)
Tämä salasanasysteemi on toteutettu pitkälti DLL:än avulla, kiitokset Blazelle hyvästä DLL oppaasta.
Sen pidemmittä puheitta koodin valmisteluihin.
Kääntyy ainakin VB6 Enterprise Editionilla.
Blazen DLL Oppaasta kannattaa katsoa alku miten tehdään DLL Projekti.
Luokkamoduulin (Class Module) nimi saisi olla Class1.
Lisäksi tarvitaan normaali moduuli.
Sitten avataan uusi VB ja tehdään sinne Standard EXE-projekti.
Sinne kaksi tekstikenttää (txtUsername ja txtPassword). Toiseen tulee käyttäjätunnus, toiseen salasana
Lisää vielä painike (Button1) jota painamalla tarkistetaan käyttäjätunnuksen oikeellisuus.
Lisäksi copypastea Data.datin sisältö kryptattuna C:n juureen
DLL:n moduuliin
Public Tunnukset() As Variant *** DLL:n luokkamoduuliin Public Status As Boolean Public Process As Boolean Public Sub Authentification(ArgUsername As String, ArgPassword As String) 'Määritellään prosessi käyntiin 'ja ilmoitetaan ettei salasana 'ole (toistaiseksi) oikein Process = True Status = False Dim KohdeKansio As String Dim KohdeKansio2 As String 'Varsinainen salasanatiedosto on data.dat 'Kryptaamme salasanan auki tiedostoon passutAuki.dat-iin KohdeKansio = "C:\data.dat" KohdeKansio2 = "C:\passutAuki.dat" Open KohdeKansio For Input As #1 decrypt$ = "" 'Avattu merkkijono code = 123 'Koodi Do Until EOF(1) Input #1, Number& 'Luetaan salattuja numeroita e$ = Chr$(Number& Xor code) 'konvertoidaan Xorilla decrypt$ = decrypt$ & e$ 'ja rakennetaan merkkijono. Loop Open KohdeKansio2 For Binary As #2 Put #2, , decrypt$ 'Laitetaan aukikryptattu merkkijono Close #2 'sille kuuluvaan paikkaan Close #1 Open KohdeKansio2 For Input As #1 'Luetaan kyseistä tiedostoa 'Tiedoston rakenne riveittäin: 'Montako alkiota, numero 'Tyhjä 'ID 'Käyttäjätunnus 'Salasana 'Milloin vaihdettu 'Tyhjä jne. Line Input #1, Alkiot 'Montako alkiota tarvitaan Alkiot = Val(Alkiot) ReDim Tunnukset(Alkiot, 4) Line Input #1, Rivi 'Tyhjä rivi Rivi = "" Dim Password As String For i = 1 To Alkiot Line Input #1, id 'Järjestysnumero Line Input #1, Username 'Käyttäjätunnus Line Input #1, Password 'Salasana Line Input #1, Changed 'Milloin salasana viimeksi vaihdettiin Line Input #1, Rivi 'Tyhjä Tunnukset(i, 0) = id Tunnukset(i, 1) = Username Tunnukset(i, 2) = Password Tunnukset(i, 3) = Changed id = "" Username = "" Password = "" Changed = "" Next i Dim Changed1 As Integer 'Milloin salasana on viimeksi Dim Changed2 As Integer 'vaihdettu? Dim Changed3 As Integer 'Vuosi, Kuukausi, Päivä, Dim Changed4 As Date 'ja päiviä For i = 1 To Alkiot id = Tunnukset(i, 0) Username = Tunnukset(i, 1) 'Jaetaaan Password = Tunnukset(i, 2) 'muuttujat Changed = Tunnukset(i, 3) 'taulukkoon Changed1 = Mid(Tunnukset(i, 3), 1, 4) Changed2 = Mid(Tunnukset(i, 3), 5, 2) Changed3 = Mid(Tunnukset(i, 3), 7, 2) Changed4 = DateSerial(Changed1, Changed2, Changed3) If ArgUsername = Username And ArgPassword = Password Then Close #1 'Suljetaan tiedosto Kill KohdeKansio2 'Tapetaan se Process = False 'Ilmaistaan prosessin loppuminen Status = True 'Kerrotaan että salasana on oikein Exit Sub 'Poistutaan End If Next i If Dir(".\pass.dat") = "pass.dat" Then Kill ("C:\pass.dat") kysely = MsgBox("Käyttäjää ei tunnistettu", vbCritical, "Password Authetification") Close #1 If Dir(KohdeKansio2) = KohdeKansio2 Then Kill KohdeKansio2 Status = False Process = False Exit Sub '*************************** '* TIEDOSTOVIRHE * '*************************** Tiedostovirhe: Close MsgBox ("An unknown error " & Err.Number & vbCrLf & Err.Description) End Sub
Standard EXEen
Private Sub Command1_Click() Dim Vastaus As Boolean Dim MunLuokka As Class1 Set MunLuokka = New Class1 MunLuokka.Authentification txtUsername.Text, txtPassword.Text Vastaus = MunLuokka.Status If Vastaus = True Then 'Oikea vastaus MsgBox "oikein" Exit Sub ElseIf Vastaus = False Then MsgBox("Väärin!") End If Set MunLuokka = Nothing End Sub
Data.dat
Tiedoston sisältö kryptattuna
73 118 113 118 113 74 118 113 58 26 9 20 118 113 16 18 8 8 26 118 113 73 75 75 77 75 77 67 118 113 118 113 73 118 113 54 18 21 21 26 118 113 16 20 18 13 14 118 113 73 75 75 77 75 78 73 72 118 113
Tiedoston sisältö normaalina
2 1 Aaro kissa 2006068 2 Minna koivu 20060523
No hyvä ja hyvä opas, kiva, että siitä jotain hyötyä oli :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.