Avatar billede Slettet bruger
29. januar 2004 - 13:13 Der er 16 kommentarer og
1 løsning

att. netro

Hej netro

Med reference til http://www.eksperten.dk/spm/456782 har jeg lige et spørgsmål.
Avatar billede netro Nybegynder
29. januar 2004 - 23:22 #1
Betragt krypteringsnøglen som et password. Den bør være af en rimelig længde med både tal og bogstaver. F.eks.:

Sj587GhK23nLp14cV
Avatar billede Slettet bruger
30. januar 2004 - 13:38 #2
ok :)

en anden ting - hvor sikker er jeg på at rutinen aldrig fejler?
Avatar billede Slettet bruger
30. januar 2004 - 18:31 #3
en tredje ting (se bort fra den anden) er at jeg har problemer med at bruge funktionen sammen med cookies.

Hvis jeg skriver en cookie med de krypterede password og dekrypterer det passer det ikke sammen. Det virker fint nok ellers, men når det går gennem cookien så går det galt.

<%
'// Den nøgle som rutinen bruger til at beregne kryptering og dekryptering med
krypt = "ælksud097862lkjghas0d86a5sdeygq2j3hvsdjvndnxicibynamaselycasdsæalkjeqewwtaysiepåøækkjyhxtakjhasdklmnr098719851asdjøæåøæå098213982176123455dat98s76213,.-"
Function Krypter(Streng)
    for tal1 = 0 to len(Streng)
        for tal2 = 1 to len(krypt)
            kontrol = tal1*len(krypt) + tal2
            if kontrol <= len(Streng) then
                original = asc(mid(Streng,kontrol,1))
                ny = asc(mid(krypt,tal2,1))
                nytekst = nytekst + chrw(original + ny)
            end if
        next
    next
    Krypter = nytekst
End Function

'// Dekrypterer en streng
Function Dekrypter(Streng)
    for tal1 = 0 to len(Streng)
        for tal2 = 1 to len(krypt)
            kontrol = tal1*len(krypt) + tal2
            if kontrol <= len(Streng) then
                original = ascw(mid(Streng,kontrol,1))
                ny = asc(mid(krypt,tal2,1))
                nytekst = nytekst + chrw(original - ny)
            end if
        next
    next
    Dekrypter = nytekst
End Function


strPsw = Krypter(request.form("kode"))
response.cookies("psw") = strPsw
response.cookies("psw").Expires = date() + 365
'response.write strPsw
'strPsw = Dekrypter(strPsw)
'response.write "<br>" & strPsw

%>
<form action="test.asp" method="post">
<input type="text" name="kode" value="<%=request.form("kode")%>">
<input type="submit">
</form>
krypteret indhold af cookie <b><%=request.cookies("psw")%></b><br />
de-krypteret indhold af cookie <b><%=Dekrypter(request.cookies("psw"))%></b>
Avatar billede Slettet bruger
02. februar 2004 - 12:40 #4
smider du et svar? har fået løst det med cookien i http://www.eksperten.dk/spm/459358
Avatar billede netro Nybegynder
02. februar 2004 - 15:41 #5
Ja, der er åbenbart visse tegn, som ikke kan ligge i cookien.

Du er vel også klar over, at flere databaser har indbygget kryptering/dekryptering?
Avatar billede Slettet bruger
02. februar 2004 - 15:43 #6
Jeg bruger mySQL - som så vidt jeg ved har en md5 funktion, men der kan man jo kun gå én vej, right?
Avatar billede netro Nybegynder
02. februar 2004 - 16:47 #7
Nu er MD5 ikke kryptering, men ja - det er envejs.

I MySql kan du bruge:

Insert Into Tabel (Felt) Values (Encrypt('en_streng', 'key'))
Insert Into Tabel (Felt) Values (Password('en_streng'))

Det er også envejs. Hvis du vil kunne hente strengen igen, kan du bruge:

Insert Into Tabel (Felt) Values (Encode('en_streng', 'key'))
Select Decode('en_streng', 'key') From Tabel
Avatar billede Slettet bruger
02. februar 2004 - 16:50 #8
ved godt at md5 ikke er krypt.

fra og med hvilken mySQL ver. er det muligt?
Avatar billede netro Nybegynder
02. februar 2004 - 17:14 #9
Det ved jeg ikke, men det virker i hvertfald fint i 3.23.53. Så hvis din version ikke er ældre, burde der ikke være problemer. Der er dog tilføjet noget mere i ver. 4.x

Prøv at se lidt her: http://www.mysql.com/doc/en/Encryption_functions.html
Avatar billede Slettet bruger
02. februar 2004 - 17:15 #10
og inden jeg kaster mig over den - er den bedre end din funktion?
Avatar billede netro Nybegynder
02. februar 2004 - 17:28 #11
Jeg vil foretrække at lade MySql gøre det.

Et lille tip til felttyperne:

Password() -> CHAR(16)
Encode() -> TINYBLOB
Avatar billede Slettet bruger
02. februar 2004 - 17:39 #12
så skal jeg bruge to attributter?
Avatar billede netro Nybegynder
02. februar 2004 - 17:57 #13
Hvad er det, du vil?
Avatar billede Slettet bruger
02. februar 2004 - 18:00 #14
jeg vil gerne det jeg gør nu men erik jacobsen har givet mig indtryk af at det er en primitiv måde at gøre det på.
Ved oprettelse krypterer jeg brugerens adgangskode inden det lægges i db.
Når han logger ind og vælger autologin, smides en cookie med brugernavn og krypteret adgangskode, som bruges til at lave en session med brugernavnet ud fra og denne sesisons værdi er afgørende for hvilken brugers (sin egen) indstillinger man kan redigere.
Avatar billede netro Nybegynder
02. februar 2004 - 18:48 #15
Det er også udmærket.

Vigtigt er det bare, at deres passwords ikke opbevares i rå form hverken i cookie eller database. Vil du gøre det endnu mere sikkert, kan du (som du selv var inde på) benytte en MD5-hash. Således kan du hash'e password'et med javascript, inden det sendes fra klienten til serveren. Ulempen er så, at du er nødt til sende brugeren et nyt password, hvis vedkommende glemmer det gamle. Jeg har i øvrigt et script i ASP, der kan lave en MD5-streng, hvis det har interesse.
Avatar billede Slettet bruger
02. februar 2004 - 19:01 #16
tror jeg nøjes med den modificerede udgave af dit script. Har ikke rigtig tid til at fedte mere rundt med det :(

Har i øvrigt opdaget endnu en bug i det (håber ikke der kommer flere)

i krypter bør man have

    'fjerner plinger
    nytekst = replace(nytekst,"'","&#39;")
    Krypter = nytekst

og i dekrypter bør man have

    'tilføjer plinger igen
    nytekst = replace(nytekst,"&#39;","'")
    Dekrypter = nytekst
Avatar billede netro Nybegynder
02. februar 2004 - 19:14 #17
Okay :)
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