Avatar billede medjeti Nybegynder
09. marts 2001 - 00:53 Der er 15 kommentarer og
1 løsning

Krypterings-funktion

Hej

Jeg skal bruge en krypteringsfunktion af en eller anden art, som jeg kan bruge til at kryptere passwords osv. inden de bliver lagt i en database, og (selvfølgelig) dekryptere når jeg skal bruge passwordet igen.

Jeg fandt denne her http://www.eksperten.dk/spm/47498

---
  tekst = \"Lad os se om dette kan krypteres, med denne nøgle\"
  krypt = \"Med en Nøgle med 1 tal & specialkarakterer\"
 
  function krypter(teksten)
  for tal1 = 0 to len(teksten)
    for tal2 = 1 to len(krypt)
      kontrol = tal1*len(krypt) + tal2
      if kontrol <= len(teksten) then
        original = asc(mid(teksten,kontrol,1))
        ny = asc(mid(krypt,tal2,1))
        nytekst = nytekst + chrw(original + ny)
      end if
    next
  next
  krypter = nytekst
  end function
 
  function dekrypter(teksten)
  for tal1 = 0 to len(teksten)
    for tal2 = 1 to len(krypt)
      kontrol = tal1*len(krypt) + tal2
      if kontrol <= len(teksten) then
        original = ascw(mid(teksten,kontrol,1))
        ny = asc(mid(krypt,tal2,1))
        nytekst = nytekst + chrw(original - ny)
      end if
    next
  next
  dekrypter = nytekst
  end function
 
  ktekst = krypter(tekst)
 
  Response.Write \"Teksten: \" & tekst & \" : \" & len(tekst)
  Response.Write \"<P>Krypteret: \" & ktekst & \" : \" & len(ktekst)
  Response.Write \"<P>Dekrypteret: \" & dekrypter(ktekst)
---

Den virker fint indenfor samme session, men hvis jeg trækker en krypteret streng ud af databasen bliver den ikke dekrypteret rigtigt...
Gør jeg noget forkert eller er der nopgen der ligger inde med en mere persistent kryptering/dekryptering?
Avatar billede jens Nybegynder
09. marts 2001 - 08:14 #1
Prøv det her:

<%
Function Encrypt(theNumber)
On Error Resume Next
Dim n, szEnc, t, HiN, LoN, i
n = CDbl((theNumber + 1570) ^ 2 - 7 * (theNumber + 1570) - 450)
If n < 0 Then szEnc = \"R\" Else szEnc = \"J\"
n = CStr(abs(n))
For i = 1 To Len(n) step 2
  t = Mid(n, i, 2)
  If Len(t) = 1 Then
  szEnc = szEnc & t
  Exit For
  End If
  HiN = (CInt(t) And 240) / 16
  LoN = CInt(t) And 15
  szEnc = szEnc & Chr(Asc(\"M\") + HiN) & Chr(Asc(\"C\") + LoN)
Next
Encrypt = szEnc
End Function

Function Decrypt(theNumber)
On Error Resume Next
Dim e, n, sign, t, HiN, LoN, NewN, i
e = theNumber
If Left(e, 1) = \"R\" Then sign = -1 Else sign = 1
e = Mid(e, 2)
NewN = \"\"
For i = 1 To Len(e) step 2
  t = Mid(e, i, 2)
  If Asc(t) >= Asc(\"0\") And Asc(t) <= Asc(\"9\") Then
  NewN = NewN & t
  Exit For
  End If
  HiN = Mid(t, 1, 1)
  LoN = Mid(t, 2, 1)
  HiN = (Asc(HiN) - Asc(\"M\")) * 16
  LoN = Asc(LoN) - Asc(\"C\")
  t = CStr(HiN Or LoN)
  If Len(t) = 1 Then t = \"0\" & t
  NewN = NewN & t
Next
e = CDbl(NewN) * sign
Decrypt = CLng((7 + sqr(49 - 4 * (-450 - e))) / 2 - 1570)
End Function
%>
<html><body>
Original number: 69 <br>
Encrypt(69) returns: JNMQMOJ8 <br>
Decrypt(\"JNMQMOJ8\") returns: 69
<p>
Another example using variables instead: <br>
Encrypt(Request.Form(\"ID\")) <br>
Encrypt(myVar) <br>
Decrypt(Request.QueryString(\"id\")) <br>
Decrypt(\"JNMQMOJ8\") <br>
Decrypt(myVar)

</body></html>
Avatar billede medjeti Nybegynder
09. marts 2001 - 11:53 #2
Ser meget godt ud, men det var sådan set en tekststreng der skulle krypteres...
Avatar billede jens Nybegynder
09. marts 2001 - 12:25 #3
ups ;-)
Avatar billede medjeti Nybegynder
09. marts 2001 - 12:40 #4
Desuden kunne jeg godt tænke mig at der var en eller anden form for nøgle som man selv definerer (jf. eksemplet ovenfor).
Men tak for indsatsen... :)
Avatar billede frank_jensen Nybegynder
14. marts 2001 - 08:21 #5
Jeg bruger den øverste kryptering til at gemme koder i en database, og den virker perfekt...  dvs. at den krypter og dekrypter rigtigt...
Avatar billede medjeti Nybegynder
14. marts 2001 - 15:17 #6
Okay, så fatter jeg ikke hvad jeg gør galt...
Det virker som sagt godt nok inden for samme session:

Tekst: Lad os se om dette kan krypteres, med denne nøgle
Nøgle: Med en Nøgle med 1 tal & specialkarakterer

Krypteret: ?ÆÈ@Ôá@Ás?ÛÒ@ÑÊØ??@ßÂÚ@??ìàÙÈÛÆß?ßÆÏ?É×Óà²?ÒEÌÚ?

Dekrypteret: Lad os se om dette kan krypteres, med denne nøgle

Men hvis jeg tager den krypterede streng og dekrypterer går der ged i den:

dekrypter(\"?ÆÈ@Ôá@Ás?ÛÒ@ÑÊØ??@ßÂÚ@??ìàÙÈÛÆß?ßÆÏ?É×Óà²?ÒEÌÚ?\")

?ad os s??om det kan ypteres? med?denne?n%gl

Men det ER jo nok bare mig der gør et eller andet forkert...
Avatar billede frank_jensen Nybegynder
14. marts 2001 - 15:20 #7
hvordan gemmer du stregen mellem sessionerne ? (Hvilket format)
Avatar billede medjeti Nybegynder
14. marts 2001 - 15:28 #8
Well, lige præcis her har jeg bare kopieret den krypterede streng fra browseren... Ellers kommmer den i et varchar-felt i en SQL-database
Avatar billede frank_jensen Nybegynder
14. marts 2001 - 15:39 #9
tja, jeg gemmer direkte i et almindeligt tekst-felt i en Access-db, og der læses det udemærket fra....

Har du prøvet at gemme det i DB, og så dekrypterer derfra ?
Avatar billede medjeti Nybegynder
14. marts 2001 - 16:08 #10
Nøjagtig det samme hvis jeg trækker det fra DB... Aaaargh, jeg VED bare det er en lille latterlig fejl der ødelægger det for mig :(
Well, jeg finder nok ud af det engang...
Avatar billede medjeti Nybegynder
14. marts 2001 - 16:09 #11
Og bare lige for at være sikker: Den funktion du bruger er den NØJAGTIG magen til min...?
Avatar billede frank_jensen Nybegynder
15. marts 2001 - 09:17 #12
\'<!-- Krypteringsmodulet -->
  tekst = \"\"
  krypt = \"Min6#Nøgle\"
 
  function krypter(teksten)
  for tal1 = 0 to len(teksten)
    for tal2 = 1 to len(krypt)
      kontrol = tal1*len(krypt) + tal2
      if kontrol <= len(teksten) then
        original = asc(mid(teksten,kontrol,1))
        ny = asc(mid(krypt,tal2,1))
        nytekst = nytekst + chrw(original + ny)
      end if
    next
  next
  krypter = nytekst
  end function
 
  function dekrypter(teksten)
  for tal1 = 0 to len(teksten)
    for tal2 = 1 to len(krypt)
      kontrol = tal1*len(krypt) + tal2
      if kontrol <= len(teksten) then
        original = ascw(mid(teksten,kontrol,1))
        ny = asc(mid(krypt,tal2,1))
        nytekst = nytekst + chrw(original - ny)
      end if
    next
  next
  dekrypter = nytekst
  end function
Avatar billede medjeti Nybegynder
15. marts 2001 - 13:35 #13
Ja de ser godtnok meget ens ud...

Kan du dekryptere denne streng:
?ÊÒV?ÁEÚÑ?¼Ö???ÂUÌ?Ю×?¡?ÇUÛÑײÜ?V³S?ÐÊ»×ÓV?nsÓÑ

Med denne nøgle:
Min6#Nøgle

(Jeg får det til: ?ad smse?om? t}e?kan?ky}teres? me{?denne  ?le)
Jeg fatter ikke hvor det går galt...
Avatar billede frank_jensen Nybegynder
15. marts 2001 - 13:49 #14
Krypt.asp
*********************************************
<%@ Language=VBScript %>
<HTML>
<HEAD>
  <TITLE> Kryptering </TITLE>
</HEAD>
<BODY>
<%
 
  tekst = \"MIn helt egen besked...\"
  krypt = \"Min6#Nøgle\"
 
  function krypter(teksten)
  for tal1 = 0 to len(teksten)
    for tal2 = 1 to len(krypt)
      kontrol = tal1*len(krypt) + tal2
      if kontrol <= len(teksten) then
        original = asc(mid(teksten,kontrol,1))
        ny = asc(mid(krypt,tal2,1))
        nytekst = nytekst + chrw(original + ny)
      end if
    next
  next
  krypter = nytekst
  end function
 
  function dekrypter(teksten)
  for tal1 = 0 to len(teksten)
    for tal2 = 1 to len(krypt)
      kontrol = tal1*len(krypt) + tal2
      if kontrol <= len(teksten) then
        original = ascw(mid(teksten,kontrol,1))
        ny = asc(mid(krypt,tal2,1))
        nytekst = nytekst + chrw(original - ny)
      end if
    next
  next
  dekrypter = nytekst
  end function
 
  ktekst = krypter(tekst)
 
  Response.Write \"Teksten: \" & tekst & \" : \"
  Response.Write \"<P>Krypteret: \" & ktekst & \" : \"
  Response.Write \"<P>Dekrypteret: \" & dekrypter(ktekst)
  krypt = \"hsjkehfse\"
  Response.Write \"<P>Dekrypteret med forkert nøgle: \" & dekrypter(ktekst)
 
%>
<P>&nbsp;</P>

</BODY>
</HTML>
*******************************************
se resultatet på
http://www.ravnenet.dk/krypt.asp

(det er da godt i den samme session, jeg udvider den lige)...
Avatar billede frank_jensen Nybegynder
15. marts 2001 - 13:49 #15
men hovrfor udevide, det er en hardcoded tekst, der læses som fra en DB ???
Avatar billede medjeti Nybegynder
15. marts 2001 - 14:00 #16
Okay, jeg tror måske jeg er ved at have skovlen under den (fatter stadig ikke hvad der var galt)
Tak for hjælpen :)
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