CHIFFRAGE AES: ALGORITHME DE RIJNDAEL

NicoProg Messages postés 26 Date d'inscription lundi 2 avril 2001 Statut Membre Dernière intervention 28 mars 2005 - 28 nov. 2003 à 12:17
mouradgharbi Messages postés 2 Date d'inscription vendredi 30 novembre 2012 Statut Membre Dernière intervention 14 mai 2013 - 14 mai 2013 à 22:55
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/18265-chiffrage-aes-algorithme-de-rijndael

mouradgharbi Messages postés 2 Date d'inscription vendredi 30 novembre 2012 Statut Membre Dernière intervention 14 mai 2013
14 mai 2013 à 22:55
j ai besoin le code source AES en c++builder qui crypte des textes
mouradgharbi Messages postés 2 Date d'inscription vendredi 30 novembre 2012 Statut Membre Dernière intervention 14 mai 2013
14 mai 2013 à 22:54
J AI BESOIN LE CODE SOURCE de AES
marwachr Messages postés 39 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 15 novembre 2011
15 nov. 2011 à 17:20
ça compile pas ce code , une est erreur est produite qui est du à la commande
rijndael('c', texte, cle);
text ,'c' et cle sont de type char[] alors que les parametres de rijindael sont de type unsigned char . Comment la corrigées SVP ??
Vidarce Messages postés 6 Date d'inscription lundi 27 novembre 2000 Statut Membre Dernière intervention 17 août 2010
17 août 2010 à 16:47
Bonjour,
Tout d'abord bravo pour le travail effectué. Une question me turlupine: il n'y a pas possibilité de choisir un IV ? Y en a-t-il un par defaut que je n'ai pas vu ?
Utilisateur anonyme
7 nov. 2007 à 17:40
Puis-je ?

Je vais vous mettre tous les deux d'accord, ca vous intéresse ?
Il s'agit bien de puissance de 2, mais réalisées dans le corps fini de Gallois GF(2^8) (cite : "Rcon[i], contains the values given by [xi-1,{00},{00},{00}], with x i-1 being powers of x (x is denoted as {02}) in the field GF(28)" ---- source FIPS 197).
Voilà, donc il s'agit tout de même bien d'un 1B dans le vecteur (en fait 1B000000 même).

Sinon, il suffit d'utiliser les vecteurs Fips qu'on trouve sur le site du NIST pour valider une implémentation (et seulement l'implémentation, pas sa sécurité).
cs_mitch53 Messages postés 3 Date d'inscription lundi 5 mai 2003 Statut Membre Dernière intervention 7 novembre 2007
7 nov. 2007 à 14:37
Je suis d'accord que les première valeur sont des puissances de 2.
Mais à partir de 0x80 ca ne l'est plus...

0x80*2 = 0x100 et non pas 0x1b

Regarde les pages 27 et 28 de la fips - 197 (document officiel validé par le NIST...)
Les valeurs utilisées pour rcon sont:
0x01
0x02
0x04
0x08
0x10
0x20
0x40
0x80
0x1b
0x36

Ce ne sont pas des puissance de 2 pour les 2 dernières.
Utilisateur anonyme
7 nov. 2007 à 13:53
Non il est bon, ce sont des puissances de 2 mais en hexadécimal (d'où le "0x"). Avant de crier au loup, regarde d'un peu plus près.
cs_mitch53 Messages postés 3 Date d'inscription lundi 5 mai 2003 Statut Membre Dernière intervention 7 novembre 2007
7 nov. 2007 à 11:32
Il est faut ce code...

Y a deja une erreur dans la première fonction qui produit rcon....
Ce ne sont pas des puissances de 2.
les valeurs de rcon sont:
0x01
0x02
0x04
0x08
0x10
0x20
0x40
0x80
0x1b
0x36
Utilisateur anonyme
24 mai 2006 à 14:09
Bonjour

Au final, ton code respecte-t-il bien l'algorithme standardisé de Rijndael?
koumkoom Messages postés 2 Date d'inscription mardi 22 février 2005 Statut Membre Dernière intervention 1 mars 2005
1 mars 2005 à 23:53
Salut,

J'ai déja un code en C qui crypte le message en AES-256 (256 bits) et qui rajoute une signature au message a partir d'un code SHA-256 (256 bits).

Maintenant je dois envoyer le message dans un port série, puis le message doit etre décrypter, mais le probleme c'est que la, il faut le faire en java !!!

c'est pour ca que je cherche un AES-256/SHA-256 codé en java., il y a aussi des librairies qui le fond, je crois mais je ne sais pas encore tres bien l'utiliser !!

Donc si quelqu'un a qlque chose dessus,
merci d'avance
Utilisateur anonyme
1 mars 2005 à 16:44
- Le code JAVA ressemblera de très près au code C++ orienté objet de ce code.
- Ici, on est pas sur http://www.javafr.com/
- Qu'entend tu par AES-256/SHA-256 ? Tu souhaites avoir le code pour AES et le code pour SHA ???


Bienvenue à toi qui t'es inscrit juste pour poster ce message ;p
koumkoom Messages postés 2 Date d'inscription mardi 22 février 2005 Statut Membre Dernière intervention 1 mars 2005
1 mars 2005 à 10:55
Salut,

Est ce qu il y aurait le code en java pour un AES-256/SHA-256
Utilisateur anonyme
13 janv. 2005 à 19:18
Trankille. Trop tranquille.
Le but de ce site n'est pas de prendre des bouts de codes ni quoi que ce soit du genre, le but est de s'amuser en implémentant des choses qui nous plaisent.
Je préfère l'implémenté moi même.
D'ailleurs je l'ai fais, il fonctionne et il est également instantané.
trankille91 Messages postés 3 Date d'inscription jeudi 30 décembre 2004 Statut Membre Dernière intervention 30 décembre 2004
13 janv. 2005 à 17:35
Vous trouverez l'algorithme de l'AES en C ou C++ à cette adresse

http://fp.gladman.plus.com/cryptography_technology/rijndael/

je l'utilise personnellement pour une application au sein de mon entreprise. Le cryptage et le décryptage sont instantané ça fonctionne parfaitement. Il utilise des clés de 128 bits (donc légal en France).
Utilisateur anonyme
6 janv. 2005 à 13:53
Malheureusement ce programme ne correspond pas à l'AES:
la transformations byte_sub est la suivante:
On prend notre byte, on prend son inverse dans le corps fini de Gallois GF(2^8), on le multiplie par la matrice que tu as donne et on ajoute une valeur de compensation.
Mes remarques: tu n'inverses pas le byte A, hors, c'est cette première transformation qui permet d'éviter les attaques par fréquence.
Ensuite La matrice que tu utilise est juste A CONDITION que l'octet (byte) soit dans la disposition 01234567 (bit à gauche plus faible). Ce n'est généralement pas le cas. Donc la matrice n'est pas la bonne même si elle donne un résultat. Enfin, pour la même raison, la valeur de compensation n'est pas 1100 0110 0xC6 198 mais 0110 0011 = 0x63 = 99.
La preuve: en regardant sur internet la valeur de la S-Box, on trouve pour l'élément 0x00 la valeur 0x63. Hors l'inverse de 0 dans GF(2^8) est 0 (il est défini car on ne peux pas le calculer 0 est la seule valeur de ce corps à ne pas s'inverser). Donc 0x00 XOR 0x63 = 0x63.
De même, 1 s'inverse en 1 (évidement !) et son résultat dans la S-Box est 0x7C.

Je n'ai pas encore regardé les autres transformations.

Le mieux pour vérifier l'exactitude de l'algo c'est de télécharger les couples test: (message,cle) et de crypter. Ensuite, il faut comparer les valeurs.

++
cs_Thaeron Messages postés 202 Date d'inscription vendredi 6 juillet 2001 Statut Membre Dernière intervention 31 octobre 2007
4 nov. 2004 à 00:19
Rofl, je n'ai pas fais de confusion, je me suis juste mal exprimé: quand j'ai dis "qu'il y ai des zéros", je ne parlais pas du caractere 0 (soit '0') mais du caractere qui a pour valeur ASCII 0 (soit '\0').
0 et '\0' sont équivalent et donc tronquent une chaine (puisque ce sont les caracteres de fin de chaine).
L'algorythme peut il faire apparaitre le caractere '\0' ou pas ?
NicoProg Messages postés 26 Date d'inscription lundi 2 avril 2001 Statut Membre Dernière intervention 28 mars 2005
3 nov. 2004 à 19:06
Pour le zéro, ça ne vas pas tronquer, c'est le caractère \0 qui tronque.

"\0" != '\0' donc même si t'a un \ puis un 0 ça ne sera pas non plus reconnu comme une fin de chaîne.

Sinon pour une implémentation 256 bits, ça doit être faisable je pense, mais je sais pas si ça a déjà été fait :-)
cs_Thaeron Messages postés 202 Date d'inscription vendredi 6 juillet 2001 Statut Membre Dernière intervention 31 octobre 2007
3 nov. 2004 à 18:52
Personnellement je m'en contrefous que ça soit limité a 128 bits. Deplus des millions gens ont des programmes pirates ou des musiques/films issuent des réseaux P2P alors on va pas m'emmerder parce que je fais joujou avec un cryptage à 256 bits, la légalité est très subjective.
Sinon est ce que tu as une idée pour l'une de mes questions précédentes ?
NicoProg Messages postés 26 Date d'inscription lundi 2 avril 2001 Statut Membre Dernière intervention 28 mars 2005
3 nov. 2004 à 13:41
Autant pour moi Thaeron :-). C'est vrai que c'est un peu crade mon code, mais j'avais fait ça rapido :-).

Ensuite pour le 256 bits ... c'est interdit en France :-S (d'ailleur je sais pas quand est-ce qu'ils vont changer cette loi débile qui interdit de chiffrer en plus de 128 bits).
cs_Thaeron Messages postés 202 Date d'inscription vendredi 6 juillet 2001 Statut Membre Dernière intervention 31 octobre 2007
3 nov. 2004 à 13:03
J'ai encore une question, est ce qu'il se peut que dans le message crypté il y ai des 0 ? (ce qui tronquerai la chaine)
cs_Thaeron Messages postés 202 Date d'inscription vendredi 6 juillet 2001 Statut Membre Dernière intervention 31 octobre 2007
3 nov. 2004 à 12:54
Au fait, NicoProg tu dois malloc 17 octets et non 16 (a cause du ' \0' de fin de chaines).
De plus texte doit etre de type unsigned char et non char signé.
Tu as aussi oublié de d'utiliser free à la fin.
smoundangha > Merci pour ce code, je cherchai une implémentation propre avec un exemple depuis quelques jours =)
cs_Thaeron Messages postés 202 Date d'inscription vendredi 6 juillet 2001 Statut Membre Dernière intervention 31 octobre 2007
3 nov. 2004 à 12:48
Est ce qu'il existe une implémentation de cet algo pour des clefs de 256 bits ?
Utilisateur anonyme
4 juil. 2004 à 10:01
Salut, je travail actuellement sur un crypto système.
J'aimerais savoir où as tu trouvé les détails de fonctionnement de cet algorithme ou bien si tu t'es tapé la RFC...

Petite remarque: c'est assez amusant d'utiliser cet algorithme pour les communications car il est actuellement illégal en France. Pour les paranox, ca rassure pas mal d'avoir une solution encore réniée par l'état.
BlackGoddess Messages postés 338 Date d'inscription jeudi 22 août 2002 Statut Membre Dernière intervention 14 juin 2005
3 déc. 2003 à 10:47
joli code :)
smoundangha Messages postés 23 Date d'inscription mercredi 12 novembre 2003 Statut Membre Dernière intervention 2 février 2004
28 nov. 2003 à 18:54
ok! Alors tout va bien.
Juste pour information, j'ai déjà posté un main qui utilise cet algorithme. Ce main présente un menu d'actions (chiffrer, déchiffrer, calculer la taille du fichier,etc.)
++
NicoProg Messages postés 26 Date d'inscription lundi 2 avril 2001 Statut Membre Dernière intervention 28 mars 2005
28 nov. 2003 à 14:13
milles excuses, c'est moi le gros boulet :). En fait, vous pouvez me taper :-D.

un bon main qui fonctionne :) :

int main () {
char *texte;
char *cle;
texte = (char *)malloc(16 * sizeof(char));
cle = (char *)malloc(16 * sizeof(char));

strcpy(texte, "Coucou les gens ");
strcpy(cle, "npxpanqienfkzslk");

printf("Original : %s

", texte);

rijndael('c', texte, cle);
printf("Crypter : %s

", texte);

rijndael('d', texte, cle);
printf("Décrypter : %s

", texte);

return 0;
}
NicoProg Messages postés 26 Date d'inscription lundi 2 avril 2001 Statut Membre Dernière intervention 28 mars 2005
28 nov. 2003 à 13:22
Ou c'est pitètre moi qui l'utilise mal :-D. voici mon petit main :

int main () {
rijndael('c', "Coucou les gens ", "npxpanqienfkzslk");
return 0;
}


Voilà, me frappez pas si c'est moi qui a fumé ;).

Nico
smoundangha Messages postés 23 Date d'inscription mercredi 12 novembre 2003 Statut Membre Dernière intervention 2 février 2004
28 nov. 2003 à 13:17
ça marche pas?! :-( Bon, c'est kan même bizarre mais je vais regarder ça ce soir.
Je signale que je l'ai développé sous cygwin et testé sous redhat 7.2
Donc, à moins d'avoir posté une mauvaise version....
++
NicoProg Messages postés 26 Date d'inscription lundi 2 avril 2001 Statut Membre Dernière intervention 28 mars 2005
28 nov. 2003 à 12:51
Bon, alors après tests, ca marche pas, il doit y avoir des problèmes de gestion mémoire :). Ca seg fault dans tous les sens.

Je vais essayé de résoudre le problème, mais je promet rien :).
NicoProg Messages postés 26 Date d'inscription lundi 2 avril 2001 Statut Membre Dernière intervention 28 mars 2005
28 nov. 2003 à 12:17
Ca m'a l'air tout à fait interessant, et bravo parceque ça à pas l'air facile à implémenter quand même :).

Nico