CRYPTAGE / DECRYPTAGE EN RC4

PtitJeoJeo Messages postés 85 Date d'inscription mardi 29 janvier 2002 Statut Membre Dernière intervention 18 avril 2005 - 28 juil. 2002 à 22:07
Philippe734 Messages postés 308 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 15 juin 2015 - 8 août 2004 à 13:25
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/4160-cryptage-decryptage-en-rc4

Philippe734 Messages postés 308 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 15 juin 2015 1
8 août 2004 à 13:25
que ce soit du RC4 ou non, merci car c'est juste ce que je cherchai ; crypter et décrypter un string :-)
cygen Messages postés 4 Date d'inscription mardi 18 novembre 2003 Statut Membre Dernière intervention 5 mars 2004
22 déc. 2003 à 14:33
On peut t'envoyer un email ??? pour des renseignements.
lolo32 Messages postés 36 Date d'inscription mercredi 13 février 2002 Statut Membre Dernière intervention 6 juin 2006
22 déc. 2003 à 13:39
Je suis en train de le traduire en C et en C++ (utilisation de classe)
cygen Messages postés 4 Date d'inscription mardi 18 novembre 2003 Statut Membre Dernière intervention 5 mars 2004
19 déc. 2003 à 15:14
Je serais curieux de voir le même programme en C, possiblité de transcription si'l vous plaît ?? :) en ce qui concerne ce code en vb il fontionne merveilleusement bien.
lolo32 Messages postés 36 Date d'inscription mercredi 13 février 2002 Statut Membre Dernière intervention 6 juin 2006
28 déc. 2002 à 10:09
C'est normal.
Le tableau d'octet est recomposé à partir de la clé. Or, celui-ci est constitué à partir de la clé. Si la clé ne contient que les mêmes lettre, le cryptage sera identique. ainsi, tu obtiendra le même résultat avec la clé A ou avec la clé AAAAAAAAAAAAAAAAAAAAAAAA.
C'est le cryptage qui est fait ainsi.
Gorgot Messages postés 95 Date d'inscription lundi 28 janvier 2002 Statut Membre Dernière intervention 21 février 2008
27 déc. 2002 à 12:22
tit commentaire... si tu cripte disons AAAAAA ak la key AAA et que tu le décrypte ak juste AA ben ils vas te resortir le meme AAAAAA pareil... Bug du prog ou du RC4?
cs_got Messages postés 139 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 15 mars 2016
10 sept. 2002 à 19:27
si je crypte un texte avec des maj elle ressorte decrypter en miniscule normal comment faire pour palier a ça???
cs_bigane Messages postés 46 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 12 février 2004
30 juil. 2002 à 20:00
Encore un mot :
Ici http://wombat.doc.ic.ac.uk/foldoc/foldoc.cgi?RC4, il est dit que le RC4 en version exportable des US (limité avec une clé de 40 bits) est cassé en 8 jours par deux universités. Le terme RC4 est interdit d'utilisation dans un logiciel sans payer des droits. L'algo du RC4 n'a jamais été divulgé officiellement et ce code peut donc être utilisé sans garantie de la RSA Data Security, mais uniquement si vous ne mentionnez pas que c'est du RC4.

A Utiliser avec key >= 128 bits (16 octets) au minimum donc (et pas que de l'alpha).

Bigane
cs_bigane Messages postés 46 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 12 février 2004
30 juil. 2002 à 19:40
Bonsoir Lolo32,
Tant pis pour le mod avec les parenthèses c'était juste pour éviter les confusions.
Bravo, ce code est maintenant correct.
En réponse à TheBabyCool (qui lit l'anglais je présume vu son pseudo) :
<<
RC4 is a stream cipher designed by Rivest for RSA Data Security (now RSA Security). It is a variable key-size stream cipher with byte-oriented operations. The algorithm is based on the use of a random permutation. Analysis shows that the period of the cipher is overwhelmingly likely to be greater than 10100. Eight to sixteen machine operations are required per output byte, and the cipher can be expected to run very quickly in software. Independent analysts have scrutinized the algorithm and it is considered secure.
http://www.rsasecurity.com/rsalabs/faq/3-6-3.html
>>

Et c'est bien le code du RC4, sans ajout, sans modif, mais en VB (4, 5 6, et VBA)
Note 9/10.
Bigane
lolo32 Messages postés 36 Date d'inscription mercredi 13 février 2002 Statut Membre Dernière intervention 6 juin 2006
30 juil. 2002 à 18:30
Ce probleme vient du fait que le texte, une fois crypte, se retrouve sous la forme binaire.
Ainsi, la chaine est complete, mais le 20eme caractere est le caractere chr(0), et indique ainsi la fin de la chaine pour le text (meme explication pour le 2eme caractere du second exemple).
cs_doms Messages postés 45 Date d'inscription samedi 22 décembre 2001 Statut Membre Dernière intervention 11 septembre 2003
30 juil. 2002 à 15:41
Heu je trouvé quelque chose de vraiment bizzare !!
Lorsque je veux crypter : "mon texte est en clair" avec la clé "Computer" sela me donne après décryptage "mon texte est en cl" !! Pire, lorsque j'utilise la clé : "computer" ( tout en minuscule ) j'obtient : "m" !!! Il semblerais que la fonction crypt renvoie le bon encryptage ( longueur correct ) mais dans la textbox txtEncrypted il en manque la fin, alors le decryptage renvoie un texte incomplet...
Je n'ai pas trouvé d'autres exemples qui me donne la même chose, c'est peut-être un cas à part... Bon voila si il y en a qui veulent joué avec ça....
lolo32 Messages postés 36 Date d'inscription mercredi 13 février 2002 Statut Membre Dernière intervention 6 juin 2006
30 juil. 2002 à 12:46
Merci pour tes conseils bigane. Je viens de modifier les sources.

>(I Mod Longueur) + 1 au lieu de I Mod Longueur + 1

J n'ai pas effectu cette modification car l'operation modulo est prioritaire sur l'addition, donc les parentheses sont inutiles.
TheBabyCool Messages postés 34 Date d'inscription dimanche 2 septembre 2001 Statut Membre Dernière intervention 4 mars 2003
29 juil. 2002 à 18:04
Je suis pas sur que c du RC4(Algo pour crypter a 128 bits)
cs_bigane Messages postés 46 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 12 février 2004
29 juil. 2002 à 16:12
Salut,
j'ai juste des commentaires d'amélioration de ton code.
1) utilise des long pour la longueur de ton texte (Dim Longueur As Long, C As Long, T As Long); car sinon, tu es limité à 32Ko. Et des fichiers de 32Ko, c'est petit.
2) met "as string" en fin de tes fonctions Crypt et Decrypt, sinon ta fonction renvoie un variant (avec une valeur de type string).
3) utilise mid$(), chr$() sinon ces fonctions (mid() et chr() retournent des variants, et VB insère du code supplémentaire pour transformer ces variants en string.
4) utilise un type long pour i et j. En effet le processeur Intel est plus lent lorsqu'il traite un integer à la place d'un long. Comme ce sont des index d'un tableau, ils seront transformés en long de toutes façons (et utilisation d'une instruction du processeur en plus).
5) utilise (expression) and 255& au lieu de (expression) mod 256, mod est une division et est moins rapide qu'un AND. le & en fin de 255 permet d'effectuer le AND avec un entier long, comme cela il n'y a pas de transformation de type.
6) utilise un tableau de long au lieu d'un tableau d'integer pour S(), et cela toujours pour les mêmes raisons.
7) utilise For C 1 To Longueur au lieu de For C 0 To Longueur - 1
Et tu retireras les C + 1 dans la boucle, tu gagne deux additions à chaque boucle.
8) Facultatif: juste pour la propreté, utilise (I Mod Longueur) + 1 au lieu de I Mod Longueur + 1. (nb: l'utilisation de mod est très judicieuse dans ce cas, merci pour l'astuce qui évite un compteur sur key).

En résumé, plus aucun long dans ce code, des types pour les fonctions, des $ pour les instructions mid et chr, modification des index de boucle.

Sinon, ton code peut être utilisé comme un module, sans rien modifier d'autre.

Bon code, 9 sur 10 si tu effectue toutes ces modifs, sinon 5.
9 car le RC4 est dépassé, personnellement je l'ai recodé en utilisant deux Sbox S1() et S2() et trois indices i,j,k ainsi qu'une ronde d'initialisation paramétrable qui permet de brouiller n fois les deux tables au lieu d'une seule. C'est un bon sujet pour un autre source, non ?

Bigane
lolo32 Messages postés 36 Date d'inscription mercredi 13 février 2002 Statut Membre Dernière intervention 6 juin 2006
29 juil. 2002 à 09:21
En fait, certains fichiers nescessites de crypter en RC4, tel les fichers PDF protgs par un mot de passe par exemple.
Tu peux toujours crypter des fichiers : il suffit de passer le contenu du fichier en paramtre, aps l'avoir lu, puis tu obtient en retour le contenu du fichier crypt que tu paux recrire.
PtitJeoJeo Messages postés 85 Date d'inscription mardi 29 janvier 2002 Statut Membre Dernière intervention 18 avril 2005
28 juil. 2002 à 22:07
pourkoi ne pa créér ton propre algo de cryptage ? et qu'il ne soit pa réservé qu'a du texte ? sinon ouai c bien
PtitJeoJeo
Rejoignez-nous