Avatar billede joeblack Nybegynder
15. september 2009 - 19:08 Der er 8 kommentarer og
1 løsning

Nemme point

Hej alle

Jeg forsøger at skrive et asp-script om til asp.net, men er ingen ørn...

Hvordan er det lige jeg kalder en funktion EnDeCrypt() og sætter værdien ind i min form ?

Login.aspx (al kode):

<%@ Page Language="VB" codebehind="login.aspx.vb" autoeventwireup="false" %>

<form runat="server" action="http://www.xxx.dk/login/" method="post">
<input type="hidden" id="timeid" name="timeid" value="<% = now() %>" />
<input type="hidden" name="wID" value="<% =EnDeCrypt(now(),pwd) %>" />
<input type="submit" value="Klik her for at logge ind" />
</form>

Og login.aspx.vb (al kode) :
Public Class login Inherits System.Web.UI.Page

  pwd = "qwerty"
 
  Dim sbox(255)
  Dim key(255)


  Sub RC4Initialize(strPwd)

      dim tempSwap
      dim a
      dim b

      intLength = len(strPwd)
      For a = 0 To 255
        key(a) = asc(mid(strpwd, (a mod intLength)+1, 1))
        sbox(a) = a
      next

      b = 0
      For a = 0 To 255
        b = (b + sbox(a) + key(a)) Mod 256
        tempSwap = sbox(a)
        sbox(a) = sbox(b)
        sbox(b) = tempSwap
      Next
 
  End Sub
 
  Function EnDeCrypt(plaintxt, psw)

      dim temp
      dim a
      dim i
      dim j
      dim k
      dim cipherby
      dim cipher

      i = 0
      j = 0

      RC4Initialize psw

      For a = 1 To Len(plaintxt)
        i = (i + 1) Mod 256
        j = (j + sbox(i)) Mod 256
        temp = sbox(i)
        sbox(i) = sbox(j)
        sbox(j) = temp
 
        k = sbox((sbox(i) + sbox(j)) Mod 256)

        cipherby = Asc(Mid(plaintxt, a, 1)) Xor k
        cipher = cipher & Chr(cipherby)
      Next

      EnDeCrypt = cipher
   
  End Function

End Class

Det bør være ret nemt, hvis man ellers kan asp.net...
Avatar billede keysersoze Guru
15. september 2009 - 19:14 #1
Hvorfor skifte fra ASP til ASP.NET hvis du alligevel koder gammeldags? .NET har en hel membershipprovider der kan håndtere login - og har du for meget eksisterende så du gerne vil undgå den så benyt i det mindste .NET kontroller til din input-felter.
Avatar billede joeblack Nybegynder
15. september 2009 - 19:20 #2
Det er blot en funktion til at generere en krypteret streng, som jeg kan dekryptere i modtagerenden. Jeg har brugt koden tidligere i en asp-fil, men skal altså bruge den nu på et eksternt asp.net-site. Jeg kender fint til asp.net's login-muligheder.
Avatar billede joeblack Nybegynder
15. september 2009 - 19:41 #3
Hvad siger du Soze ? Det er måske ikke så simpelt endda ?
Avatar billede keysersoze Guru
15. september 2009 - 19:54 #4
jeg vil sige det samme som før - benyt .net når du arbejder i .net, dvs (uden særlig meget VB i fingrene) fx;

<asp:TextBox ID="tbSomeId" runat="server"></asp:TextBox>

tbSomeId.Text = Me.EnDeCrypt(DateTime.Now, pwd)
Avatar billede arne_v Ekspert
16. september 2009 - 03:53 #5
Prøv og kig på følgende lille eksempel.

rc4.aspx
--------

<%@ Page Language="VB" CodeFile="rc4.aspx.vb" Inherits="E.RC4" %>
Output from encryption: <asp:label id="outtxt" runat="server"/>
<hr/>
<form runat="server">
Input for encryption: <asp:TextBox id="intxt" runat="server"/>
<br/>
<asp:Button text="Encrypt" onclick="Encrypt_Click" runat="server"/>
</form>

rc4.aspx.vb
-----------

Imports System.Web.UI.WebControls

NameSpace E
    Public Class RC4
    Inherits Page
        Protected Sub Encrypt_Click(src As Object, e As EventArgs)
            outtxt.Text = EnDeCrypt(intxt.Text, "hemmeligt")
            intxt.Text = ""
        End Sub
        Dim sbox(255) As Integer
        Dim key(255) As Integer
        Private Sub RC4Initialize(strPwd As String)
            Dim tempSwap As Integer
            Dim a As Integer
            Dim b As Integer
            Dim intLength as Integer
            intLength= Len(strPwd)
            For a = 0 To 255
                key(a) = Asc(Mid(strPwd, (a Mod intLength) + 1, 1))
                sbox(a) = a
            Next
            b = 0
            For a = 0 To 255
                b = (b + sbox(a) + key(a)) Mod 256
                tempSwap = sbox(a)
                sbox(a) = sbox(b)
                sbox(b) = tempSwap
            Next
        End Sub
        Function EnDeCrypt(plaintxt As String, psw As String) As String
            Dim temp As Integer
            Dim a As Integer
            Dim i As Integer
            Dim j As Integer
            Dim k As Integer
            Dim cipherby As Integer
            Dim cipher As String
            cipher = ""
            i = 0
            j = 0
            Call RC4Initialize(psw)
            For a = 1 To Len(plaintxt)
                i = (i + 1) Mod 256
                j = (j + sbox(i)) Mod 256
                temp = sbox(i)
                sbox(i) = sbox(j)
                sbox(j) = temp
                k = sbox((sbox(i) + sbox(j)) Mod 256)
                cipherby = Asc(Mid(plaintxt, a, 1)) Xor k
                cipher = cipher & cipherby.ToString("X2")
            Next
            EnDeCrypt = cipher
      End Function
    End Class
End NameSpace
Avatar billede joeblack Nybegynder
16. september 2009 - 07:34 #6
Hej arne_v

Tak, det ser ud til at virke fint - dog er den genererede krypterede streng ikke mage til "asp-scriptet".

Eksempel fra asp.net:89A6766241C377272D929D75A4A4D957EF205E

Eksempel fra asp: %89%A6vbA%C3w%27%2D%92%9Du%A4%A4%D9V%EF%21U

Men hul i det - jeg skifter scriptet i modtager-enden med "det nye".

Mange tak for hjælpen - læg et svar.
Avatar billede arne_v Ekspert
17. september 2009 - 03:45 #7
Er det ikke bare forskellen på hex encoding og URL encoding ?

Jeg kunne godt lave det om til URL encoding.
Avatar billede arne_v Ekspert
17. september 2009 - 04:21 #8
Og et svar fra mig.

Men hele brug af web kontrol problematikken havde keysersoze jo allerede dækket inden jeg kom ind i billedet.
Avatar billede arne_v Ekspert
14. oktober 2009 - 02:14 #9
Tid at få afsluttet her?
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

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



IT-JOB

Cognizant Technology Solutions Denmark ApS

Senior Delivery Manager

Formpipe Software A/S

Market Manager

NEM IT-Solutions A/S

IT-driftskonsulent