Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Rijndael

  1. #1

    Rijndael

    Ciao,
    qualche problema con l'algoritmo Rijndael

    Ho il codice....
    codice:
     
    
    Public Function Crypta(ByVal strDaCryptare As String) As String
    Dim rjm As New RijndaelManaged
    rjm.KeySize = 128
    rjm.BlockSize = 128
    rjm.Key = ASCIIEncoding.ASCII.GetBytes(chiave)
    rjm.IV = ASCIIEncoding.ASCII.GetBytes(iv)
    Dim input As Byte() = Encoding.UTF8.GetBytes(strDaCryptare)
    Dim output As Byte() = rjm.CreateEncryptor().TransformFinalBlock(input, 0, input.Length)
    Return Convert.ToBase64String(output)
    End Function
    quando vado a chiamare la funzione mi viene riportato....

    Public Function Crypta(ByVal strDaCryptare As String) As String Dim rjm As New RijndaelManaged rjm.KeySize = 128 rjm.BlockSize = 128 rjm.Key = ASCIIEncoding.ASCII.GetBytes(chiave) rjm.IV = ASCIIEncoding.ASCII.GetBytes(iv) Dim input As Byte() = Encoding.UTF8.GetBytes(strDaCryptare) Dim output As Byte() = rjm.CreateEncryptor().TransformFinalBlock(input, 0, input.Length) Return Convert.ToBase64String(output) End Function
    Microsoft VBScript runtime error '800a000d'

    Type mismatch: 'Crypta'

    /Rijndael_test.asp, line 21

    questa è la pagina Rijndael_test.asp


    codice:
    <%@ Language=VBScript %>
    <%
    'option explicit
    Response.Buffer=true%>
    <html>
      
    
    
      <body>
    <%
    
    dim stringa
    stringa = Crypta("fabio")
    response.write "stringa(""fabio"")
    "
    response.write "   Actual: " & stringa & "
    
    "
    
    %>
    
      </body>
    </html>

  2. #2
    sei sicuro che il codice dentro la funzione Crypta sia asp classico?

  3. #3
    decisamente no!

  4. #4
    Originariamente inviato da Skyscraper84
    decisamente no!
    quindi? se sai che NON è codice asp classico, ti aspetti davvero che funzioni?

  5. #5
    questo è sicuramente più familiare
    ma non capisco ancora come fare per criptare e decriptare una stringa

    avete idee?

    grazie
    Fabio


    ps: ho dovuto togliere parte del codice perchè se no non potevo inserire il messaggio
    codice:
     
    
    <% 
    [..]
    
    
    Private Function RotateLeft(lValue, iShiftBits)
        RotateLeft = LShift(lValue, iShiftBits) Or RShift(lValue, (32 - iShiftBits))
    End Function
    
    Private Function RotateLeftByte(bytValue, bytShiftBits)
        RotateLeftByte = LShiftByte(bytValue, bytShiftBits) Or RShiftByte(bytValue, (8 - bytShiftBits))
    End Function
    
    Private Function Pack(b())
        Dim lCount
        Dim lTemp
        
        For lCount = 0 To 3
            lTemp = b(lCount)
            Pack = Pack Or LShift(lTemp, (lCount * 8))
        Next
    End Function
    
    Private Function PackFrom(b(), k)
        Dim lCount
        Dim lTemp
        
        For lCount = 0 To 3
            lTemp = b(lCount + k)
            PackFrom = PackFrom Or LShift(lTemp, (lCount * 8))
        Next
    End Function
    
    Private Sub Unpack(a, b())
        b(0) = a And m_lOnBits(7)
        b(1) = RShift(a, 8) And m_lOnBits(7)
        b(2) = RShift(a, 16) And m_lOnBits(7)
        b(3) = RShift(a, 24) And m_lOnBits(7)
    End Sub
    
    Private Sub UnpackFrom(a, b(), k)
        b(0 + k) = a And m_lOnBits(7)
        b(1 + k) = RShift(a, 8) And m_lOnBits(7)
        b(2 + k) = RShift(a, 16) And m_lOnBits(7)
        b(3 + k) = RShift(a, 24) And m_lOnBits(7)
    End Sub
    
    Private Function xtime(a)
        Dim b
        
        If (a And &H80) Then
            b = &H1B
        Else
            b = 0
        End If
        
        xtime = LShiftByte(a, 1)
        xtime = xtime Xor b
    End Function
    
    Private Function bmul(x, y)
        If x <> 0 And y <> 0 Then
            bmul = m_ptab((CLng(m_ltab(x)) + CLng(m_ltab(y))) Mod 255)
        Else
            bmul = 0
        End If
    End Function
    
    Private Function SubByte(a)
        Dim b(3)
        
        Unpack a, b
        b(0) = m_fbsub(b(0))
        b(1) = m_fbsub(b(1))
        b(2) = m_fbsub(b(2))
        b(3) = m_fbsub(b(3))
        
        SubByte = Pack(b)
    End Function
    
    Private Function product(x, y)
        Dim xb(3)
        Dim yb(3)
        
        Unpack x, xb
        Unpack y, yb
        product = bmul(xb(0), yb(0)) Xor bmul(xb(1), yb(1)) Xor bmul(xb(2), yb(2)) Xor bmul(xb(3), yb(3))
    End Function
    
    Private Function InvMixCol(x)
        Dim y
        Dim m
        Dim b(3)
        
        m = Pack(m_InCo)
        b(3) = product(m, x)
        m = RotateLeft(m, 24)
        b(2) = product(m, x)
        m = RotateLeft(m, 24)
        b(1) = product(m, x)
        m = RotateLeft(m, 24)
        b(0) = product(m, x)
        y = Pack(b)
        
        InvMixCol = y
    End Function
    
    Private Function ByteSub(x)
        Dim y
        Dim z
        
        z = x
        y = m_ptab(255 - m_ltab(z))
        z = y
        z = RotateLeftByte(z, 1)
        y = y Xor z
        z = RotateLeftByte(z, 1)
        y = y Xor z
        z = RotateLeftByte(z, 1)
        y = y Xor z
        z = RotateLeftByte(z, 1)
        y = y Xor z
        y = y Xor &H63
        
        ByteSub = y
    End Function
    
    Public Sub gentables()
        Dim i
        Dim y
        Dim b(3)
        Dim ib
        
        m_ltab(0) = 0
        m_ptab(0) = 1
        m_ltab(1) = 0
        m_ptab(1) = 3
        m_ltab(3) = 1
        
        For i = 2 To 255
            m_ptab(i) = m_ptab(i - 1) Xor xtime(m_ptab(i - 1))
            m_ltab(m_ptab(i)) = i
        Next
        
        m_fbsub(0) = &H63
        m_rbsub(&H63) = 0
        
        For i = 1 To 255
            ib = i
            y = ByteSub(ib)
            m_fbsub(i) = y
            m_rbsub(y) = i
        Next
        
        y = 1
        For i = 0 To 29
            m_rco(i) = y
            y = xtime(y)
        Next
        
        For i = 0 To 255
            y = m_fbsub(i)
            b(3) = y Xor xtime(y)
            b(2) = y
            b(1) = y
            b(0) = xtime(y)
            m_ftable(i) = Pack(b)
            
            y = m_rbsub(i)
            b(3) = bmul(m_InCo(0), y)
            b(2) = bmul(m_InCo(1), y)
            b(1) = bmul(m_InCo(2), y)
            b(0) = bmul(m_InCo(3), y)
            m_rtable(i) = Pack(b)
        Next
    End Sub
    
    Public Sub gkey(nb, nk, key())                
        Dim i
        Dim j
        Dim k
        Dim m
        Dim N
        Dim C1
        Dim C2
        Dim C3
        Dim CipherKey(7)
        
        m_Nb = nb
        m_Nk = nk
        
        If m_Nb >= m_Nk Then
            m_Nr = 6 + m_Nb
        Else
            m_Nr = 6 + m_Nk
        End If
        
        C1 = 1
        If m_Nb < 8 Then
            C2 = 2
            C3 = 3
        Else
            C2 = 3
            C3 = 4
        End If
        
        For j = 0 To nb - 1
            m = j * 3
            
            m_fi(m) = (j + C1) Mod nb
            m_fi(m + 1) = (j + C2) Mod nb
            m_fi(m + 2) = (j + C3) Mod nb
            m_ri(m) = (nb + j - C1) Mod nb
            m_ri(m + 1) = (nb + j - C2) Mod nb
            m_ri(m + 2) = (nb + j - C3) Mod nb
        Next
        
        N = m_Nb * (m_Nr + 1)
        
        For i = 0 To m_Nk - 1
            j = i * 4
            CipherKey(i) = PackFrom(key, j)
        Next
        
        For i = 0 To m_Nk - 1
            m_fkey(i) = CipherKey(i)
        Next
        
        j = m_Nk
        k = 0
        Do While j < N
            m_fkey(j) = m_fkey(j - m_Nk) Xor _
                SubByte(RotateLeft(m_fkey(j - 1), 24)) Xor m_rco(k)
            If m_Nk <= 6 Then
                i = 1
                Do While i < m_Nk And (i + j) < N
                    m_fkey(i + j) = m_fkey(i + j - m_Nk) Xor _
                        m_fkey(i + j - 1)
                    i = i + 1
                Loop
            Else
                i = 1
                Do While i < 4 And (i + j) < N
                    m_fkey(i + j) = m_fkey(i + j - m_Nk) Xor _
                        m_fkey(i + j - 1)
                    i = i + 1
                Loop
                If j + 4 < N Then
                    m_fkey(j + 4) = m_fkey(j + 4 - m_Nk) Xor _
                        SubByte(m_fkey(j + 3))
                End If
                i = 5
                Do While i < m_Nk And (i + j) < N
                    m_fkey(i + j) = m_fkey(i + j - m_Nk) Xor _
                        m_fkey(i + j - 1)
                    i = i + 1
                Loop
            End If
            
            j = j + m_Nk
            k = k + 1
        Loop
        
        For j = 0 To m_Nb - 1
            m_rkey(j + N - nb) = m_fkey(j)
        Next
        
        i = m_Nb
        Do While i < N - m_Nb
            k = N - m_Nb - i
            For j = 0 To m_Nb - 1
                m_rkey(k + j) = InvMixCol(m_fkey(i + j))
            Next
            i = i + m_Nb
        Loop
        
        j = N - m_Nb
        Do While j < N
            m_rkey(j - N + m_Nb) = m_fkey(j)
            j = j + 1
        Loop
    End Sub
    
    Public Sub encrypt(buff())
        Dim i
        Dim j
        Dim k
        Dim m
        Dim a(7)
        Dim b(7)
        Dim x
        Dim y
        Dim t
        
        For i = 0 To m_Nb - 1
            j = i * 4
            
            a(i) = PackFrom(buff, j)
            a(i) = a(i) Xor m_fkey(i)
        Next
        
        k = m_Nb
        x = a
        y = b
        
        For i = 1 To m_Nr - 1
            For j = 0 To m_Nb - 1
                m = j * 3
                y(j) = m_fkey(k) Xor m_ftable(x(j) And m_lOnBits(7)) Xor _
                    RotateLeft(m_ftable(RShift(x(m_fi(m)), 8) And m_lOnBits(7)), 8) Xor _
                    RotateLeft(m_ftable(RShift(x(m_fi(m + 1)), 16) And m_lOnBits(7)), 16) Xor _
                    RotateLeft(m_ftable(RShift(x(m_fi(m + 2)), 24) And m_lOnBits(7)), 24)
                k = k + 1
            Next
            t = x
            x = y
            y = t
        Next
        
        For j = 0 To m_Nb - 1
            m = j * 3
            y(j) = m_fkey(k) Xor m_fbsub(x(j) And m_lOnBits(7)) Xor _
                RotateLeft(m_fbsub(RShift(x(m_fi(m)), 8) And m_lOnBits(7)), 8) Xor _
                RotateLeft(m_fbsub(RShift(x(m_fi(m + 1)), 16) And m_lOnBits(7)), 16) Xor _
                RotateLeft(m_fbsub(RShift(x(m_fi(m + 2)), 24) And m_lOnBits(7)), 24)
            k = k + 1
        Next
        
        For i = 0 To m_Nb - 1
            j = i * 4
            UnpackFrom y(i), buff, j
            x(i) = 0
            y(i) = 0
        Next
    End Sub
    
    Public Sub decrypt(buff())
        Dim i
        Dim j
        Dim k
        Dim m
        Dim a(7)
        Dim b(7)
        Dim x
        Dim y
        Dim t
        
        For i = 0 To m_Nb - 1
            j = i * 4
            a(i) = PackFrom(buff, j)
            a(i) = a(i) Xor m_rkey(i)
        Next
        
        k = m_Nb
        x = a
        y = b
        
        For i = 1 To m_Nr - 1
            For j = 0 To m_Nb - 1
                m = j * 3
                y(j) = m_rkey(k) Xor m_rtable(x(j) And m_lOnBits(7)) Xor _
                    RotateLeft(m_rtable(RShift(x(m_ri(m)), 8) And m_lOnBits(7)), 8) Xor _
                    RotateLeft(m_rtable(RShift(x(m_ri(m + 1)), 16) And m_lOnBits(7)), 16) Xor _
                    RotateLeft(m_rtable(RShift(x(m_ri(m + 2)), 24) And m_lOnBits(7)), 24)
                k = k + 1
            Next
            t = x
            x = y
            y = t
        Next
        
        For j = 0 To m_Nb - 1
            m = j * 3
            
            y(j) = m_rkey(k) Xor m_rbsub(x(j) And m_lOnBits(7)) Xor _
                RotateLeft(m_rbsub(RShift(x(m_ri(m)), 8) And m_lOnBits(7)), 8) Xor _
                RotateLeft(m_rbsub(RShift(x(m_ri(m + 1)), 16) And m_lOnBits(7)), 16) Xor _
                RotateLeft(m_rbsub(RShift(x(m_ri(m + 2)), 24) And m_lOnBits(7)), 24)
            k = k + 1
        Next
        
        For i = 0 To m_Nb - 1
            j = i * 4
            
            UnpackFrom y(i), buff, j
            x(i) = 0
            y(i) = 0
        Next
    End Sub
    
    Private Function IsInitialized(vArray)
        On Error Resume Next
        
        IsInitialized = IsNumeric(UBound(vArray))
    End Function
    
    Private Sub CopyBytesASP(bytDest, lDestStart, bytSource(), lSourceStart, lLength)
        Dim lCount
        
        lCount = 0
        Do
            bytDest(lDestStart + lCount) = bytSource(lSourceStart + lCount)
            lCount = lCount + 1
        Loop Until lCount = lLength
    End Sub
    
    Public Function EncryptData(bytMessage, bytPassword)
        Dim bytKey(31)
        Dim bytIn()
        Dim bytOut()
        Dim bytTemp(31)
        Dim lCount
        Dim lLength
        Dim lEncodedLength
        Dim bytLen(3)
        Dim lPosition
        
        If Not IsInitialized(bytMessage) Then
            Exit Function
        End If
        If Not IsInitialized(bytPassword) Then
            Exit Function
        End If
        
        For lCount = 0 To UBound(bytPassword)
            bytKey(lCount) = bytPassword(lCount)
            If lCount = 31 Then
                Exit For
            End If
        Next
        
        gentables
        gkey 8, 8, bytKey
        
        lLength = UBound(bytMessage) + 1
        lEncodedLength = lLength + 4
        
        If lEncodedLength Mod 32 <> 0 Then
            lEncodedLength = lEncodedLength + 32 - (lEncodedLength Mod 32)
        End If
        ReDim bytIn(lEncodedLength - 1)
        ReDim bytOut(lEncodedLength - 1)
        
        Unpack lLength, bytIn
        CopyBytesASP bytIn, 4, bytMessage, 0, lLength
    
        For lCount = 0 To lEncodedLength - 1 Step 32
            CopyBytesASP bytTemp, 0, bytIn, lCount, 32
            Encrypt bytTemp
            CopyBytesASP bytOut, lCount, bytTemp, 0, 32
        Next
        
        EncryptData = bytOut
    End Function
    
    Public Function DecryptData(bytIn, bytPassword)
        Dim bytMessage()
        Dim bytKey(31)
        Dim bytOut()
        Dim bytTemp(31)
        Dim lCount
        Dim lLength
        Dim lEncodedLength
        Dim bytLen(3)
        Dim lPosition
        
        If Not IsInitialized(bytIn) Then
            Exit Function
        End If
        If Not IsInitialized(bytPassword) Then
            Exit Function
        End If
        
        lEncodedLength = UBound(bytIn) + 1
        
        If lEncodedLength Mod 32 <> 0 Then
            Exit Function
        End If
        
        For lCount = 0 To UBound(bytPassword)
            bytKey(lCount) = bytPassword(lCount)
            If lCount = 31 Then
                Exit For
            End If
        Next
        
        gentables
        gkey 8, 8, bytKey
    
        ReDim bytOut(lEncodedLength - 1)
        
        For lCount = 0 To lEncodedLength - 1 Step 32
            CopyBytesASP bytTemp, 0, bytIn, lCount, 32
            Decrypt bytTemp
            CopyBytesASP bytOut, lCount, bytTemp, 0, 32
        Next
    
        lLength = Pack(bytOut)
        
        If lLength > lEncodedLength - 4 Then
            Exit Function
        End If
        
        ReDim bytMessage(lLength - 1)
        CopyBytesASP bytMessage, 0, bytOut, 4, lLength
        
        DecryptData = bytMessage
    End Function
    %>

  6. #6
    Originariamente inviato da Skyscraper84
    questo è sicuramente più familiare
    ma non capisco ancora come fare per criptare e decriptare una stringa

    avete idee?
    scusa, ma lo chiedi a noi? guarda nel posto dove hai preso gli script...

    io cmq proverei queste due

    Public Function EncryptData(bytMessage, bytPassword)
    Public Function DecryptData(bytIn, bytPassword)

  7. #7
    optime... chiedo non pretendo...


    evidentemente dove ho trovato il codice non era chiaro o quantomeno non ho capito...

    la tua proposta l'avevo valutata ma non funziona

    mi riporta questa pagina e da li fa tutto.. ma è un casino, riuscite a capire come va gestito?
    codice:
     <HTML>
    <%
    ' This VBScript ASP file tests the accompanying rijndael.asp for
    ' encryption using the Rijndael AES block cipher algorithm
    %>
    
    <%
        Dim i
        Dim nb
        Dim nk
        Dim key(31)
        Dim block(31)
        Dim sTemp
        Dim sPlain
        Dim sPassword
        Dim bytIn()
        Dim bytPassword()
        Dim lCount
        
        gentables
    
        For i = 0 To 31
            key(i) = 0
        Next
    
        key(0) = 1
    
        For i = 0 To 31
            block(i) = i
        Next
    
        For nb = 4 To 8 Step 2
            For nk = 4 To 8 Step 2
    
                gkey nb, nk, key
                Response.Write "Block Size=" & nb * 32 & ",  Key size=" & nk * 32 & "
    "
    
                Response.Write "Plain
    "
                sTemp = ""
                For i = 0 To (nb * 4) - 1
                    sTemp = sTemp & Right("0" & Hex(block(i)), 2)
                Next
                Response.Write sTemp & "
    "
    
                encrypt block
                Response.Write "Encrypt
    "
                sTemp = ""
                For i = 0 To (nb * 4) - 1
                    sTemp = sTemp & Right("0" & Hex(block(i)), 2)
                Next
                Response.Write sTemp & "
    "
    
                decrypt block
                sTemp = ""
                Response.Write "Decrypt
    "
                For i = 0 To (nb * 4) - 1
                    sTemp = sTemp & Right("0" & Hex(block(i)), 2)
                Next
                Response.Write sTemp & "
    "
                Response.Write "
    "
            Next
        Next
    
        Response.Write "
    "
        Response.Write "
    "
    
        sPlain = "Plain text"
        sPassword = "Key"
    
        Response.Write "Message=" & sPlain & "
    "
        Response.Write "Key=" & sPassword & "
    "
    
        lLength = Len(sPlain)
        ReDim bytIn(lLength-1)
        For lCount = 1 To lLength
            bytIn(lCount-1)=CByte(AscB(Mid(sPlain,lCount,1)))
        Next
        lLength = Len(sPassword)
        ReDim bytPassword(lLength-1)
        For lCount = 1 To lLength
            bytPassword(lCount-1)=CByte(AscB(Mid(sPassword,lCount,1)))
        Next
        
        bytOut = EncryptData(bytIn, bytPassword)
        
        sTemp = ""
        For lCount = 0 To UBound(bytOut)
            sTemp = sTemp & Right("0" & Hex(bytOut(lCount)), 2)
        Next
        Response.Write "Encrypted=" & sTemp & "
    "
        
        bytClear = DecryptData(bytOut, bytPassword)
    
        lLength = UBound(bytClear) + 1
        sTemp = ""
        For lCount = 0 To lLength - 1
            sTemp = sTemp & Chr(bytClear(lCount))
        Next
        Response.Write "Decrypted=" & sTemp & "
    "
    
        Response.Write "
    "
    %>
    </HTML>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.