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 SubStandard 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 SubData.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.