> For the complete documentation index, see [llms.txt](https://sansong.gitbook.io/cyber/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sansong.gitbook.io/cyber/crypto/symetrique/modes-doperation.md).

# Modes d'opération

Différents modes d'opération peuvent être utilisé pour le chiffrement par bloc.

## Chiffrement par bloc

Le texte est découpé et chiffré en blocs avec des primitives blocs.

<figure><img src="https://1813806532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZRRTPIEA4wb6exZozwS0%2Fuploads%2FJtQvq2oTK0RN7l5NnuK4%2Fchiffrement-bloc.svg?alt=media&amp;token=64ad843c-1de8-4953-b3a1-60be90a241e1" alt=""><figcaption><p>Chiffrement par blocs</p></figcaption></figure>

Dans une primitive on utilise des fonctions de transposition, rotation, substitution, etc. Les blocs sont indépendants.

Prétraitement optionnel: padding → ralonger le message pour avoir la bonne taille

{% hint style="success" %}
Il faut le faire à tous les messages si on le fait pour pouvoir "dépadder"&#x20;

*Exemple de padding s'il manque 3 octets pour avoir un bloc total de 8:*

* le message fait 5 caractères
* on ajoute 3 fois l'octet 0x03
* au dépadding on voit que le dernier caractère est égal à 0x03
* on supprime 3 (0x03) caractères du message
* le message d'origine est récupéré

Cet exemple correspond au padding PKCS en général utilisé par défaut.

```
01
02 02
03 03 03
04 04 04 04
05 05 05 05 05
06 06 06 06 06 06
etc.
```

{% endhint %}
