|
| Problemer med MD5 Fra : Thomas Due |
Dato : 08-07-03 08:00 |
|
Hejsa,
Jeg downloadede for et stykke tid siden md5 fra asp-faq.dk (artikel id
52). Det virkede også fint. Nu har jeg omstruktureret min kode og nu
virker det ikke. Jeg er ærligt talt ikke klar over hvad der går galt.
Jeg får følgende fejl:
Error Type:
Microsoft VBScript runtime (0x800A000D)
Type mismatch: 'm_l2Power'
/duenet/functions/md5.asp, line 117
Jeg har IKKE ændret noget i filen md5.asp, men for en sikkerheds skyld
har jeg også hentet en ny download og det er det samme. Måden jeg
kalder md5 på er som følger:
if StrComp(md5(Password), DBPasswd) = 0 then
' Log brugeren ind
else
' Returner en fejl
end if
Hvor Password er den indtastede værdi, og DBPasswd er hentet fra
databasen. Sidstnævnte er selvfølgelig md5 krypteret. Det har som sagt
virket. Jeg vil ikke vedhæfte md5.asp, da jeg formoder at indtil flere
her på gruppen har den liggende.
--
Thomas Due
Software Developer
Scanvaegt Nordic A/S
| |
Jesper Stocholm (08-07-2003)
| Kommentar Fra : Jesper Stocholm |
Dato : 08-07-03 08:02 |
|
Thomas Due wrote :
> Jeg downloadede for et stykke tid siden md5 fra asp-faq.dk (artikel id
> 52). Det virkede også fint. Nu har jeg omstruktureret min kode og nu
> virker det ikke. Jeg er ærligt talt ikke klar over hvad der går galt.
>
> Jeg får følgende fejl:
> Error Type:
> Microsoft VBScript runtime (0x800A000D)
> Type mismatch: 'm_l2Power'
> /duenet/functions/md5.asp, line 117
Det vil nok være en god idé hvis du medsender noget af den kode hvor
m_l2Power indgår - ellers er det lidtsvært at hjælpe dig.
--
Jesper Stocholm - http://stocholm.dk - http://asp-faq.dk
Skriv venligst under det du svarer på og skær det overflødige væk.
Se evt hvorfor på http://www.usenet.dk/netikette/citatteknik.html
Svar venligt til gruppen og ikke til mig privat !
| |
Thomas Due (08-07-2003)
| Kommentar Fra : Thomas Due |
Dato : 08-07-03 08:19 |
|
Jesper Stocholm wrote in news:<Xns93B25BE8B9BD3stocholmdk@130.226.1.34>:
> Det vil nok være en god idé hvis du medsender noget af den kode hvor
> m_l2Power indgår - ellers er det lidtsvært at hjælpe dig.
Det er vi da enige om, jeg regnede dog med at bl.a. du havde den til at
ligge selv ;) Det efterfølgende er alt sammen fra md5.asp.
Private Function LShift(lValue, iShiftBits)
If iShiftBits = 0 Then
LShift = lValue
Exit Function
ElseIf iShiftBits = 31 Then
If lValue And 1 Then
LShift = &H80000000
Else
LShift = 0
End If
Exit Function
ElseIf iShiftBits < 0 Or iShiftBits > 31 Then
Err.Raise 6
End If
If (lValue And m_l2Power(31 - iShiftBits)) Then ' <<<< LINIE 117
LShift = ((lValue And _
m_lOnBits(31 - (iShiftBits + 1))) * _
m_l2Power(iShiftBits)) Or &H80000000
Else
LShift = ((lValue And m_lOnBits(31 - iShiftBits)) * _
m_l2Power(iShiftBits))
End If
End Function
m_l2Power er defineret således:
Private m_l2Power(30)
m_l2Power(0) = CLng(1)
m_l2Power(1) = CLng(2)
m_l2Power(2) = CLng(4)
m_l2Power(3) = CLng(8)
m_l2Power(4) = CLng(16)
m_l2Power(5) = CLng(32)
m_l2Power(6) = CLng(64)
m_l2Power(7) = CLng(128)
m_l2Power(8) = CLng(256)
m_l2Power(9) = CLng(512)
m_l2Power(10) = CLng(1024)
m_l2Power(11) = CLng(2048)
m_l2Power(12) = CLng(4096)
m_l2Power(13) = CLng(8192)
m_l2Power(14) = CLng(16384)
m_l2Power(15) = CLng(32768)
m_l2Power(16) = CLng(65536)
m_l2Power(17) = CLng(131072)
m_l2Power(18) = CLng(262144)
m_l2Power(19) = CLng(524288)
m_l2Power(20) = CLng(1048576)
m_l2Power(21) = CLng(2097152)
m_l2Power(22) = CLng(4194304)
m_l2Power(23) = CLng(8388608)
m_l2Power(24) = CLng(16777216)
m_l2Power(25) = CLng(33554432)
m_l2Power(26) = CLng(67108864)
m_l2Power(27) = CLng(134217728)
m_l2Power(28) = CLng(268435456)
m_l2Power(29) = CLng(536870912)
m_l2Power(30) = CLng(1073741824)
--
Thomas Due
Software Developer
Scanvaegt Nordic A/S
| |
Jesper Stocholm (08-07-2003)
| Kommentar Fra : Jesper Stocholm |
Dato : 08-07-03 09:27 |
|
Thomas Due wrote :
> Jesper Stocholm wrote in
> news:<Xns93B25BE8B9BD3stocholmdk@130.226.1.34>:
>> Det vil nok være en god idé hvis du medsender noget af den kode hvor
>> m_l2Power indgår - ellers er det lidtsvært at hjælpe dig.
>
> Det er vi da enige om, jeg regnede dog med at bl.a. du havde den til at
> ligge selv ;) Det efterfølgende er alt sammen fra md5.asp.
Ah - det var mig der sov.
I dit kald til md5 har du koden
if StrComp(md5(Password), DBPasswd) = 0 then
' Log brugeren ind
else
' Returner en fejl
end if
Er du sikker på at du videregiver noget i variablen Password?
--
Jesper Stocholm - http://stocholm.dk - http://asp-faq.dk
Skriv venligst under det du svarer på og skær det overflødige væk.
Se evt hvorfor på http://www.usenet.dk/netikette/citatteknik.html
Svar venligt til gruppen og ikke til mig privat !
| |
Thomas Due (08-07-2003)
| Kommentar Fra : Thomas Due |
Dato : 08-07-03 09:55 |
|
Jesper Stocholm wrote in news:<Xns93B26A5A6987Bstocholmdk@130.226.1.34>:
> Er du sikker på at du videregiver noget i variablen Password?
Ja, det har jeg checket. Desuden så burde md5 returnere et resultat,
selvom strengen er tom. Det mener jeg helt bestemt at jeg har testet,
og det er vist nok også i md5 eksemplet der medfølger. Yep, md5 skal
kunne tage en tom streng. Jeg har også lige teste med eksemplet, og det
virker fint. Så det må jo være et eller andet i min egen kode som
driller.
Jeg forstår det simpelt hen ikke. Jeg gentager lige fejl beskrivelsen
for en god ordens skyld.
Error Type:
Microsoft VBScript runtime (0x800A000D)
Type mismatch: 'm_l2Power'
/duenet/functions/md5.asp, line 117
--
Thomas Due
Software Developer
Scanvaegt Nordic A/S
| |
Torben Brandt (08-07-2003)
| Kommentar Fra : Torben Brandt |
Dato : 08-07-03 18:25 |
|
Thomas Due wrote:
> Det efterfølgende er alt sammen fra md5.asp.
>
> Private Function LShift(lValue, iShiftBits)
Her kunne du indsætte
Response.Write "iShiftBits=" & iShiftBits & "<br>"
for at se hvilken værdi af iShiftBits, der giver anledning til en fejl.
<snip : definition af LShift>
> If (lValue And m_l2Power(31 - iShiftBits)) Then ' <<<< LINIE 117
> LShift = ((lValue And _
> m_lOnBits(31 - (iShiftBits + 1))) * _
> m_l2Power(iShiftBits)) Or &H80000000
> Else
> LShift = ((lValue And m_lOnBits(31 - iShiftBits)) * _
> m_l2Power(iShiftBits))
> End If
> End Function
Har du prøvet efter
<!--#include file="md5.asp"-->
at indsætte
Response.Write m_l2Power(0)
for at se om m_12Power er blevet defineret ordenligt?
(Håber man kan gøre ovenstående selv om m_12Power er Private - men det
har da ingen betydning, når man ikke er i en Class, vel...)
mvh Torben
| |
Thomas Due (09-07-2003)
| Kommentar Fra : Thomas Due |
Dato : 09-07-03 07:05 |
|
Jeg håber der er nogen som er i stand til at forklare mig dette. For at
recappe så får jeg en fejl i et array på 31 elementer. Disse elementer
er type-castet til Long. Uanset hvordan jeg forsøger at tilgå disse
elementer får jeg en type mismatch.
Arrayet er deklareret således:
Private m_l2Power(30)
m_l2Power(0) = CLng(1)
m_l2Power(1) = CLng(2)
m_l2Power(2) = CLng(4)
m_l2Power(3) = CLng(8)
m_l2Power(4) = CLng(16)
m_l2Power(5) = CLng(32)
m_l2Power(6) = CLng(64)
m_l2Power(7) = CLng(128)
...
m_l2Power(28) = CLng(268435456)
m_l2Power(29) = CLng(536870912)
m_l2Power(30) = CLng(1073741824)
Nu har jeg så lige prøvet at omskrive dette array. Helt nøjagtigt har
jeg skrevet en funktion som udregner værdien istedet for.
Denne funktion ser således ud:
Private Function Do2Power(APower)
Do2Power = CLng(2^APower)
end function
Bemærk at resultatet bliver det samme, men alligevel dur arrayet ikke i
min egen web-applikation, til trods for at det fungere fint på en test
side som ingen relation har til min applikation.
Er der en som kan forklare hvad der er galt her???
Applikationen virker efter hensigten nu, men derfor kunne jeg nu godt
tænke mig at vide hvad der gik galt. I øvrigt tak for de mange forslag.
Det hjalp mig til at prøve denne løsning som jo så virkede.
--
Thomas Due
Software Developer
Scanvaegt Nordic A/S
| |
Nicolai Pedersen (09-07-2003)
| Kommentar Fra : Nicolai Pedersen |
Dato : 09-07-03 23:52 |
|
Hej Thomas
Mit gæt er at du har inkluderet filen md5.asp mere end en gang - enten i
forskellige filer der inkluderer hinanden, eller midt i et loop.
"Thomas Due" <t.due@scanvaegt_REMOVE.dk> wrote in message
news:bedq5t$b31$1@sunsite.dk...
> Hejsa,
>
> Jeg downloadede for et stykke tid siden md5 fra asp-faq.dk (artikel id
> 52). Det virkede også fint. Nu har jeg omstruktureret min kode og nu
> virker det ikke. Jeg er ærligt talt ikke klar over hvad der går galt.
>
> Jeg får følgende fejl:
> Error Type:
> Microsoft VBScript runtime (0x800A000D)
> Type mismatch: 'm_l2Power'
> /duenet/functions/md5.asp, line 117
>
> Jeg har IKKE ændret noget i filen md5.asp, men for en sikkerheds skyld
> har jeg også hentet en ny download og det er det samme. Måden jeg
> kalder md5 på er som følger:
>
> if StrComp(md5(Password), DBPasswd) = 0 then
> ' Log brugeren ind
> else
> ' Returner en fejl
> end if
>
> Hvor Password er den indtastede værdi, og DBPasswd er hentet fra
> databasen. Sidstnævnte er selvfølgelig md5 krypteret. Det har som sagt
> virket. Jeg vil ikke vedhæfte md5.asp, da jeg formoder at indtil flere
> her på gruppen har den liggende.
>
> --
> Thomas Due
> Software Developer
> Scanvaegt Nordic A/S
| |
|
|