/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Krypteringskode går i vasken.....
Fra : Simon Moore Højer


Dato : 19-10-04 18:12

Hej NG

Jeg har fået endnu et problem... er ved at lave et "krypteringsprogram"
og bruger følgende kode til at kryptere med:

indtast = InputBox("Intast dit password!" & Chr$(13) & "Der er forskel
på STORE og små bogstaver", "Password!")

personligtpassword = indtast + "htyu4l0AS3"

tekst = ""
For i = 1 To Len(txtInput.Text)
t = Mid(txtInput.Text, i, 1)
f = (i - 1) Mod Len(personligtpassword) + 1
k = Mid(personligtpassword, f, 1)
nr = Asc(t) + Asc(k)
If nr > 255 Then nr = nr Mod 255
t = Chr(nr)
tekst = tekst & t
Next i
txtInput.Text = tekst


Det går også helt fint indtil jeg prøve at "afkryptere" med denne kode:

indtast = InputBox("Intast det password du brugte da du krypterede
filen!" & Chr$(13) & "Der er forskel på STORE og små bogstaver",
"Password!")

personligtpassword = indtast + "htyu4l0AS3"
tekst = ""
For i = 1 To Len(txtInput.Text)
t = Mid(txtInput.Text, i, 1)
f = (i - 1) Mod Len(personligtpassword) + 1
k = Mid(personligtpassword, f, 1)
nr = Asc(t) - Asc(k)
If nr < 255 Then nr = nr Mod 255
t = Chr(nr)
tekst = tekst & t
Next i
txtInput.Text = tekst


Forskellen på de to koder er 8 og 9.
I linie 8 er '+' blevet til '-'
I linie 9 er '>' blevet til '<'.


Når jeg skal afkryptere går da også godt nok "(næsten)" altid. Men
ligepludselig kommer den med fejl fordi 'nr' i linie 10 er blevet et
negativt tal.

Er der nogen der kan se en løsning på det problem?
--
Simon Moore Højer

At programmere er at dykke ned i det hav af muligheder,
alle tiders hurtigst ekspanderende teknologi tilbyder.
Citat: Jakob Kristiansen (Start på visual basic 6.0)

www.viborgip.dk



 
 
Tomas Christiansen (19-10-2004)
Kommentar
Fra : Tomas Christiansen


Dato : 19-10-04 21:55

Simon Moore Højer skrev:
> If nr > 255 Then nr = nr Mod 255
...
> If nr < 255 Then nr = nr Mod 255

> Når jeg skal afkryptere går da også godt nok "(næsten)" altid. Men
> ligepludselig kommer den med fejl fordi 'nr' i linie 10 er blevet et
> negativt tal.
>
> Er der nogen der kan se en løsning på det problem?

For det første: Prøv lige at tænke lidt over om du ønsker at nr må have
værdien 255 eller ej - din kode er vist ikke helt konsistent på dette punkt
(kig på den første if-sætning og prøv at lade nr have værdierne 254, 255,
256, 509, 510 og 511).

Denæst: De to if-sætninger er ikke hinandens "modsætninger"!
I den første if-sætning sikrer du dig at værdien aldrig overstiger 255 (og i
visse tilfælde at den ikke overstiger 254), hvorimod du i den anden
if-sætning ikke sikrer dig at værdien ikke bliver negativ, hvilket du nok
bør gøre.

Til sidst et lille tip: Sætningen "If X >= Y Then X = X Mod Y" er nøjagtig
det samme som "X = X Mod Y".

-------
Tomas


Simon Moore Højer (20-10-2004)
Kommentar
Fra : Simon Moore Højer


Dato : 20-10-04 13:47

Har løst problemet ved at lave koderne om.


KRYPTER:

tekst = ""
For i = 1 To Len(txtInput.Text)
t = Mid(txtInput.Text, i, 1)
f = (i - 1) Mod Len(password) + 1
k = Mid(password, f, 1)
nr = Asc(t) - Asc(k)
If nr > 255 Then nr = nr - 255
t = Chr(nr)
tekst = tekst & t
Next i
txtInput.Text = tekst



DEKRYPTER:

tekst = ""
For i = 1 To Len(txtInput.Text)
t = Mid(txtInput.Text, i, 1)
f = (i - 1) Mod Len(password) + 1
k = Mid(password, f, 1)
nr = Asc(t) - Asc(k)
If nr < 0 Then nr = nr + 255
t = Chr(nr)
tekst = tekst & t
Next i
txtInput.Text = tekst



--
Simon Moore Højer

At programmere er at dykke ned i det hav af muligheder,
alle tiders hurtigst ekspanderende teknologi tilbyder.
Citat: Jakob Kristiansen (Start på visual basic 6.0)

www.viborgip.dk



Tomas Christiansen (20-10-2004)
Kommentar
Fra : Tomas Christiansen


Dato : 20-10-04 22:03

Simon Moore Højer skrev:
> nr = Asc(t) - Asc(k)
> If nr > 255 Then nr = nr - 255

Hvordan skulle nr kunne blive > 255, hvis værdien fremkommer ved at trække
to tal fra hinanden, som hver ligger i intervallet 0..255?

-------
Tomas


Simon Moore Højer (21-10-2004)
Kommentar
Fra : Simon Moore Højer


Dato : 21-10-04 01:22

>> nr = Asc(t) - Asc(k)
>> If nr > 255 Then nr = nr - 255
>
> Hvordan skulle nr kunne blive > 255, hvis værdien fremkommer ved at
> trække
> to tal fra hinanden, som hver ligger i intervallet 0..255?

En tanketorsk... der skulle selvfølgelig have stået:

If nr < 0 Then nr = nr + 255
t = Chr(nr)



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste