Avatar billede dollas Nybegynder
12. september 2004 - 10:33 Der er 14 kommentarer og
1 løsning

gem bruger data

Jeg har 3 bruger oplysninger som jeg skal gemme på computeren.

Jeg tænkte at gøre det ved at gemme i en text fil, men så er det jo nemt af finde.

Jeg tænkte at bruge registrerings database...

Eller er der nogle der har en ide...


Det måtte entenlig gerne krypteres, eller gemmes som binært...

Nogle ideer?
Avatar billede guidmaster Nybegynder
12. september 2004 - 10:36 #1
Jeg ville nok bruge Isolated Storage til det - en fin intro finder du på http://www.ondotnet.com/pub/a/dotnet/2003/04/21/isolatedstorage.html
Avatar billede arne_v Ekspert
12. september 2004 - 10:37 #2
Umiddelbart lyder en binær fil evt. krypteret god.

Husk dog på at .NET kan decompiles, hvilket begrænser effektiviteten af den
slags en hel del !
Avatar billede dollas Nybegynder
12. september 2004 - 10:38 #3
Det er da vist ikke det nemmeste?

Er der noget galt i at bruge reg databasen?
Avatar billede dollas Nybegynder
12. september 2004 - 10:39 #4
Hvad så med noget normal textfil, bare med de 3 filer krypteret...

?
Avatar billede arne_v Ekspert
12. september 2004 - 10:43 #5
Jeg tror at det er nemt at finde i registry.
Avatar billede arne_v Ekspert
12. september 2004 - 10:44 #6
en krypteret fil er altuid binær medmindre du bas64 encoder
Avatar billede dollas Nybegynder
12. september 2004 - 10:50 #7
Jeg har ikke forstand på kryptering...

Har du mulighed for at lave et eller andet....? Det ville være best med noget i reg databasen, så brugeren ikke kan se det...

Man skal kunne skrive og læse fra det?
Avatar billede dollas Nybegynder
12. september 2004 - 11:02 #8
Arne:

Tillægs spørgsmål til ftp dimsen.

Hvis du jeg laver det her:

Sub opretforbindelse()
        Dim cli As FtpClient = New FtpClient("server", "test", "test")


        knap_afbrydforbindelse.Enabled = True
        knap_opretforbindelse.Enabled = False
    End Sub

    Sub afbrydforbindelse()
        panel1.Text = "Afbryder forbindelse. Vent..."
        cli.Logout()
        panel1.Text = "Ingen forbindelse."
        knap_afbrydforbindelse.Enabled = False
        knap_opretforbindelse.Enabled = True
    End Sub


Hvordan kan jeg så fyre cli.Logout() i min anden sub når den bliver lavet i den øverste sub?

Beklager at jeg blander spørgsmål sammen.
Avatar billede arne_v Ekspert
12. september 2004 - 14:29 #9
Erklæringen af cli skal flyttes udenfor. Altså:

    Dim cli As FtpClient

    Sub opretforbindelse()
        cli = New FtpClient("server", "test", "test")

        knap_afbrydforbindelse.Enabled = True
        knap_opretforbindelse.Enabled = False
    End Sub

    Sub afbrydforbindelse()
        panel1.Text = "Afbryder forbindelse. Vent..."
        cli.Logout()
        panel1.Text = "Ingen forbindelse."
        knap_afbrydforbindelse.Enabled = False
        knap_opretforbindelse.Enabled = True
    End Sub
Avatar billede dollas Nybegynder
12. september 2004 - 15:43 #10
Jeg fandt ud af det med mit tillæægs spørgsmål...

Havde du en ide til det med kryptering eller gemning af login data?
Avatar billede arne_v Ekspert
12. september 2004 - 15:54 #11
Skal jeg lave noget kode som gemmer noget data krypteret ?

Så skal jeg lige vide hvad data er - string eller integer ?
Avatar billede dollas Nybegynder
12. september 2004 - 15:57 #12
Ja tak...

:)

Jeg er 3 linier som skal gemmes:

brugernavn
kodeord
gruppe


skal du have mere info?
Avatar billede arne_v Ekspert
12. september 2004 - 15:58 #13
Nope - jeg kigger på det
Avatar billede arne_v Ekspert
12. september 2004 - 16:40 #14
Hm. Det blev mere kode end jeg lige havde forventet.

Det kan ikke laves pænt på få linier.

Men her er noget kode som encrypter/descrypter og gemmer til fil.
Avatar billede arne_v Ekspert
12. september 2004 - 16:41 #15
Imports System
Imports System.IO
Imports System.Text
Imports System.Security.Cryptography

Public Class PersistedInfo
    Private utf As Encoding = New UTF8Encoding
    Private des3 As TripleDES = New TripleDESCryptoServiceProvider
    Private encrypt As ICryptoTransform
    Private decrypt As ICryptoTransform

    Public Sub New(ByVal key As String)
        If Not (key.Length = 24) Then
            Throw New Exception ("Key musy be 24 characters")
        End If
        Dim bkey As Byte() = utf.GetBytes(key)
        Dim iv As Byte() =  {1, 2, 3, 4, 5, 6, 7, 8}
        encrypt = des3.CreateEncryptor(bkey, iv)
        decrypt = des3.CreateDecryptor(bkey, iv)
    End Sub

    Public Sub Save(ByVal data As String, ByVal filename As String)
        Dim cipher As Byte() = encrypt.TransformFinalBlock(utf.GetBytes(data), 0, utf.GetByteCount(data))
        Dim stm As Stream = New FileStream (filename, FileMode.Create)
        stm.Write(cipher, 0, cipher.Length)
        stm.Close
    End Sub

    Public Function Load(ByVal filename As String) As String
        Dim filelen As Integer = CType((New FileInfo (filename)).Length, Integer)
        Dim cipher(filelen - 1) As Byte
        Dim stm As Stream = New FileStream (filename, FileMode.Open)
        stm.Read(cipher, 0, filelen)
        stm.Close
        Dim plain As String = utf.GetString(decrypt.TransformFinalBlock(cipher, 0, cipher.Length))
        Return plain
    End Function
End Class

Public Class PersistedUserInfo
    Private pi As PersistedInfo
    Private _username As String
    Private _password As String
    Private _group As String

    Public Sub New(ByVal key As String)
        pi = New PersistedInfo (key)
    End Sub

    Public Sub Save(ByVal filename As String)
        pi.Save(_username + "," + _password + "," + _group, filename)
    End Sub

    Public Sub Load(ByVal filename As String)
        Dim temp As String = pi.Load(filename)
        Dim tempsplit As String() = temp.Split(",".ToCharArray)
        _username = tempsplit(0)
        _password = tempsplit(1)
        _group = tempsplit(2)
    End Sub

    Public Property Username() As String
        Get
            Return _username
        End Get
        Set
            _username = value
        End Set
    End Property

    Public Property Password() As String
        Get
            Return _password
        End Get
        Set
            _password = value
        End Set
    End Property

    Public Property Group() As String
        Get
            Return _group
        End Get
        Set
            _group = value
        End Set
    End Property
End Class

Class MainClass

    Public Shared Sub Main(ByVal args As String())
        Dim pui As PersistedUserInfo = New PersistedUserInfo ("123456789012345678901234")
        pui.Username = "arne"
        pui.Password = "hemmeligt"
        pui.Group = "tech"
        pui.Save("C:\userinfo.dat")
        Dim pui2 As PersistedUserInfo = New PersistedUserInfo ("123456789012345678901234")
        pui2.Load("C:\userinfo.dat")
        Console.WriteLine(pui2.Username + " " + pui2.Password + " " + pui2.Group)
    End Sub
End Class
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester