ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

Implémention en VisualFoxPro de l'algorithme de cryptage RC4   



L'auteur

Christophe Chenavier
France France
Membre Simple
# 0000000023
enregistré le 14/10/2004
http://www.corwin.fr
53 ans
CHENAVIER Christophe
80440 BOVES
de la société Corwin
Fiche personnelle


Note des membres
pas de note

Contributions > 01 - PRG : Programmation > Crypto - Hash - Compression

Implémention en VisualFoxPro de l'algorithme de cryptage RC4
# 0000000299
ajouté le 13/03/2006 07:35:51 et modifié le 13/03/2006
consulté 6146 fois
Niveau initié

Version(s) Foxpro :
VFP 9.0
VFP 8.0
VFP 7.0
VFP 6.0

Description

Il suffit d'un appel à la fonction RC4 pour crypter/décrypter :

cCrypte = RC4("ceci est un test","mot de passe")

cDecrypte = RC4(cCrypte,"mot de passe")

Code source :
*!*    Objet : Implémention en VisualFoxPro de l'algorithme de cryptage RC4
*!*    Auteur : C.Chenavier
*!*    Version : 1.00 - 12/03/2006
*!*    RC4 signifie Rivest Cipher 4
*!*    Il a été conçu en 1987 par Ron Rivest de RSA Security.
*!*    Attention, le nom "RC4" est une marque déposée.
*!*    Algorithme : http://en.wikipedia.org/wiki/RC4
*!*    Les tests ont été réalisés grâce à l'article:
*!*    http://en.wikisource.org/wiki/RC4_test_vectors
*!*
*!*    Exemples de test :
*!*    c = "0000000000000000"
*!*    a = RC4(STRCONV(c,16),STRCONV(c,16))
*!*    Info(STRCONV(a,15)="DE188941A3375D3A")
*!*
*!*    c = "0123456789abcdef"
*!*    a = RC4(STRCONV(c,16),STRCONV(c,16))
*!*    Info(STRCONV(a,15)="75B7878099E0C596")
*!*
*!*    c = "0000000000000000"
*!*    k = "0123456789abcdef"
*!*    a = RC4(STRCONV(c,16),STRCONV(k,16))
*!*    Info(STRCONV(a,15)="7494C2E7104B0879")
*!*
*!*    c = "00000000000000000000"
*!*    k = "ef012345"
*!*    a = RC4(STRCONV(c,16),STRCONV(k,16))
*!*    Info(STRCONV(a,15)="D6A141A7EC3C38DFBD61")
*!*
*!*    c = "123456789abcdef0123456789abcdef0123456789abcdef012345678"
*!*    k = "0123456789abcdef"
*!*    a = RC4(STRCONV(c,16),STRCONV(k,16))
*!*    Info(STRCONV(a,15)="66A0949F8AF7D6891F7F832BA833C00C892EBE30143CE28740011ECF")


FUNCTION RC4
LPARAMETERS cTexte, cClef

LOCAL I, J, K, nLongClef, nInt, cResult
LOCAL ARRAY aInt(256)

FOR I = 1 TO 256
    aInt(I) = I-1
ENDFOR

J = 0
M.nLongClef = LEN(M.cClef)
FOR I = 1 TO 256
    J = BITAND(J + aInt(I) + ASC(SUBSTR(M.cClef, MOD(I-1,M.nLongClef)+1, 1)), 255)
    M.nInt = aInt(I)
    aInt(I) = aInt(J+1)
    aInt(J+1) = M.nInt
ENDFOR

I = 1
J = 0
M.cResult = ''
FOR K = 1 TO LEN(M.cTexte)
    I = BITAND(I, 255) + 1
    J = BITAND(J + aInt(I), 255)
    M.nInt = aInt(I)
    aInt(I) = aInt(J+1)
    aInt(J+1) = M.nInt
    M.cResult = M.cResult + CHR(BITXOR(ASC(SUBSTR(M.cTexte, K, 1)), ;
                                       aInt(BITAND(aInt(I) + M.nInt, 255)+1)))
ENDFOR

RETURN M.cResult

Commentaires
le 21/03/2006, EmanuelL a écrit :
Christophe, est-ce qu'on peut utilisé cet algorithme librement étant donné qu'il est la propriété de la RSA?
le 21/03/2006, Christophe Chenavier a écrit :
Il semble que les implémentations "non-officielles" sont légales pour autant qu'elles n'utilisent pas la marque RC4.
Cf : http://fr.wikipedia.org/wiki/Arcfour

le 21/03/2006, EmanuelL a écrit :
Merci Christophe. Publique avec Arcfour comme nom.
le 07/02/2009, abdoumaroc a écrit :
merci Christophe

Publicité

Les pubs en cours :


www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2019.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0-SP2-HF3