Rc4 encrypt/decrypt fonction

Contenu du snippet

Ce code sert a encrypter ou decrypter des strings avec un mot de passe. Baser sur le RC4.

Rapide, efficace, sécuritaire et 100% vb.

Source / Exemple :


Public Function RC4Encrypt(text As String, encryptkey As String)
    Dim sbox(256)
    Dim key(256)
    Dim temp As Integer
    Dim a As Long
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Dim cipherby As Integer
    Dim cipher As String
    
    i = 0
    j = 0
    
    RC4Initialize encryptkey, key, sbox
    
    For a = 1 To Len(text)
        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$(text, a, 1))) Xor k
        If Len(Hex(cipherby)) = 1 Then
            cipher = cipher & "0" & Hex(cipherby)
        Else
            cipher = cipher & Hex(cipherby)
        End If
    Next

    RC4Encrypt = cipher
End Function

Public Function RC4Decrypt(text, encryptkey)
    Dim sbox(256) As Integer
    Dim key(256) As Integer
    Dim Text2 As String
    Dim temp As Integer
    Dim a As Long
    Dim i As Integer
    Dim j As Integer
    Dim k As Long
    Dim w As Integer
    Dim cipherby As Integer
    Dim cipher As String
    
    For w = 1 To Len(text) Step 2
        Text2 = Text2 & Chr(Dec(Mid$(text, w, 2)))
    Next
    
    i = 0
    j = 0

    RC4Initialize encryptkey, key, sbox

    For a = 1 To Len(Text2)
        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$(Text2, a, 1)) Xor k
        cipher = cipher & Chr(cipherby)
    Next
    
    RC4Decrypt = cipher
End Function

Public Function RC4Initialize(strPwd, ByRef key, ByRef sbox)
    Dim tempSwap
    Dim a
    Dim b
    Dim intlength As Long

    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 Function
    
Public Function Dec(number) As String
    Dim base As String
    Dim iLen As Integer
    Dim iReturn As Long
    Dim i As Long
    Dim iTemp As String
    
    base = "0123456789ABCDEF"
    iLen = Len(number)
    
    For i = 0 To iLen - 1
        iTemp = Mid$(number, iLen - i, 1)
        iReturn = iReturn + (16 ^ i) * (InStr(1, base, iTemp) - 1)
    Next
    
    Dec = iReturn
End Function

Conclusion :


Utiliser comme ceci:

StringEncrypte = RC4Encrypt("message secret", "mot de passe")
StringDecrypte = RC4Decrypt(StringEncrypte, "mot de passe")

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.