Avatar billede oergaard Nybegynder
13. juli 2005 - 15:36 Der er 10 kommentarer og
2 løsninger

Kryptering/dekryptering af tekst.

Jeg krypterer med følgende kode:

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

Og dekrypterer

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

krypt er sat til ”nØle6#7”

Ved kryptering af ”Morten Ørgaard Hansen” får jeg følgende resultat:

Teksten: Morten Ørgaard Hansen
Krypteret: »NÞÙ??Wn?ÓÆ????GÍÓ©?¥
Dekrypteret: Morten Ørgaard Hansen

Hvilket ser fint ud, men hvis ikke jeg dekrypterer i samme session går det helt galt.

Hvis jeg f.eks. gemmer de krypteret information i en tekst-fil og senere indlæser denne og dekrypterer, er resultatet desværre ikke tilfredsstillende:

Teksten: »NÞÙ??Wn?ÓÆ????GÍÓ©?¥
Krypteret: M?rt 
Dekrypteret: »eÞÙ??WneÓÆ???eÍÓ©?¥

Hvilket jeg ikke rigtigt kan bruge til noget.

Nogen der kan hjælp??

//Oergaard
Avatar billede philiph Nybegynder
13. juli 2005 - 15:55 #1
Hvorfor benytter du blandet asc og ascw? Kan det have noget at gøre med codepage? Du siger du gemmer det til senere - Hvor?
Avatar billede oergaard Nybegynder
13. juli 2005 - 16:03 #2
Det bliver gemt i en tekst-fil.
Avatar billede oergaard Nybegynder
13. juli 2005 - 16:09 #3
Det var et eks. jeg fandt, så jeg ved ikke så meget om selve koden. Jeg faldt over den samme kode flere steder, hvorfor jeg valgte at bruge den. Hvis du ligger inden med en bedrer kode til en simpel kryptering/dekryptering er den velkommen. :-)

//Oergaard
Avatar billede polle007 Nybegynder
13. juli 2005 - 16:12 #4
Husker du at indlæse filen som unicode?

Det går galt, når den krypterede karakterværdi overskrider 255
Avatar billede oergaard Nybegynder
13. juli 2005 - 16:13 #5
Nej jeg indlæser den ikke som noget specielt. Hvordan indlæser jeg det som unicode??

//Orgaard
Avatar billede oergaard Nybegynder
13. juli 2005 - 16:25 #6
Men hvis jeg skal indlæse filen som Unicode, skal den så også gemmes som Unicode?

//Oergaard
Avatar billede philiph Nybegynder
13. juli 2005 - 17:04 #7
Hvordan in/udlæser du strengen fra filen.
Hvis du benytter "Open" statement, så prøv eventuelt at håndterere filen binært.

Open "TESTFILE" For Binary ...
Avatar billede oergaard Nybegynder
14. juli 2005 - 10:53 #8
Jeg har nu tilføjet følgende:
<% session.CodePage=65001 %>
+
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">

Hvilket får tildels får det til at virke. Danske bogstaver virker dog ikke længere. Nogen der har en idé til hvordan jeg kan få dem med også?
Avatar billede oergaard Nybegynder
14. juli 2005 - 12:32 #9
Jeg har løst problemet vha. ovenstående samt en replace funktion, som udskifter Å med &Aring;, å med &aring. osv. (HTML Entity Names, se evt. http://www.fileformat.info/format/w3c/htmlentity.htm?sort=Entity)

Philip og Polle007> som tak for deltagelsen skal i få hver især 50 point. Gider i oprette er svar hver?

//Oergaard
Avatar billede philiph Nybegynder
15. juli 2005 - 00:28 #10
gerne
Avatar billede ksoren Nybegynder
15. juli 2005 - 00:47 #11
Prøv denne kode, den burde virke, uden at skulle erstatte noget med noget andet

Sub SaveCrypted(cipher, filename)
    Dim fso, f

    Set fso = Server.CreateObject("Scripting.FileSystemObject")

    '-- CreateTextFile(filename, overwrite, unicode)
    Set f = fso.CreateTextFile(filename, True, True)

    f.Write cipher
    f.Close
End Sub

Function LoadCrypted(filename)
    Dim fso, f

    Set fso = Server.CreateObject("Scripting.FileSystemObject")

    '-- OpenTextFile(filename, iomode, create, format)
    Set f = fso.OpenTextFile(filename, 1, False, -1)

    LoadCrypted = f.ReadAll()
    f.Close
End Function


filename = Server.MapPath("krypt.txt")

krypt = "nØle6#7"

plain = "Morten Ørgaard Hansen"
cipher = krypter(plain)
Response.Write cipher
SaveCrypted cipher, filename

Response.Write "<br>"

cipher = LoadCrypted(filename)
plain = dekrypter(cipher)
Response.Write plain
Avatar billede oergaard Nybegynder
15. juli 2005 - 10:11 #12
ksoren> Det er samme måde jeg gør det på, men det vil ikke gemme "speciel" bogstaver som æ,ø,å,ä,ö,ü,é osv.

Denne fejl er først opstået efter jeg brugte unicode.

//Oergaard
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