docs: ajout du README avec mode d'emploi et exemples

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dom
2026-03-30 17:41:52 +02:00
parent 3c9f50676f
commit 0883075872

100
README.md Normal file
View File

@@ -0,0 +1,100 @@
**Cryptage — Chiffrement/déchiffrement CSV pour Amadea**
Outil en ligne de commande pour chiffrer et déchiffrer les champs Symbolic des exports CSV Amadea.
- **Algorithme** : AES-256-GCM (chiffrement authentifié)
- **Gestion des clés** : fichier de clé (aléatoire ou dérivé d'un mot de passe via Argon2id)
- **Performance** : ~0.14s pour 100 000 lignes × 3 champs
- **Taille** : ~740 Ko, aucune dépendance
![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnEAAAACCAYAAAA3pIp+AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAANklEQVR4nO3OMQ2AABAAsSPBCj7fFRYQwYwEZiywEZJWQZeZ2ao9AAD+4lyruzq+ngAA8Nr1AMTJBeJDClAyAAAAAElFTkSuQmCC)
**Installation**
Copier cryptage.exe sur le poste Windows. Aucune installation requise.
![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnEAAAACCAYAAAA3pIp+AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAANUlEQVR4nO3OQQmAABRAsSeYxKS/kJkED6bwYAVvImwJtszMVu0BAPAXx1rd1fn1BACA164HHDwF+DpPyKwAAAAASUVORK5CYII=)
**Utilisation**
**1. Générer une clé**
# Clé aléatoire (recommandé)
 cryptage --generate-key
 
 # Clé dérivée d'un mot de passe
 cryptage --generate-key -p
 
Le fichier cryptage.key est créé à côté de l'exécutable. **Ce fichier est secret** — sans lui, impossible de déchiffrer les données.
**2. Chiffrer**
cryptage Input.csv Output.csv
 
**3. Déchiffrer**
cryptage -d Input.csv Output.csv
 
 
 
**4. Options**
| | |
|-|-|
| **Option** | **Description** |
| -d | Mode déchiffrement |
| -k chemin | Utiliser un fichier de clé spécifique |
| -p | Dériver la clé d'un mot de passe (avec --generate-key) |
| --generate-key | Générer une nouvelle clé |
| --version | Afficher la version |
| --help | Afficher l'aide |
 
Exemple avec clé personnalisée :
cryptage -k C:\cles\ma_cle.key Input.csv Output.csv
 cryptage -d -k C:\cles\ma_cle.key Input.csv Output.csv
 
![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnEAAAACCAYAAAA3pIp+AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAANUlEQVR4nO3OQQmAABRAsSfYxKK/kYXEkyk8WcGbCFuCLTOzVXsAAPzFuVZ3dXw9AQDgtesB/v8F8JQadPwAAAAASUVORK5CYII=)
**Format CSV**
Le séparateur est **;** (point-virgule). Le fichier doit respecter cette structure :
| | | |
|-|-|-|
| **Ligne** | **Contenu** | **Description** |
| 1 | Noms des colonnes | En-têtes |
| 2 | Types des colonnes | Integer, Symbolic, Real, etc. |
| 3+ | Données | Valeurs |
 
**Seules les colonnes de type ** **Symbolic** ** sont chiffrées/déchiffrées.** Les autres colonnes sont recopiées telles quelles.
![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnEAAAACCAYAAAA3pIp+AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAANUlEQVR4nO3OMQ2AUBBAsUfyNTCi9VwgEA3sWGAjJK2CbjNzVGcAAPzFtapV7V9PAAB47X4AEW4ELQDBN+AAAAAASUVORK5CYII=)
**Exemple complet**
**Fichier d'entrée (**Input.csv **) — données en clair**
ID;N_sejour;N_IPP;CP;Age;Tarif
 Integer;Integer;Symbolic;Symbolic;Integer;Real
 1;2422530;879856498;33740;37;2984
 2;2422592;317489412;33680;15;1568
 3;2422985;971433167;33121;74;8974
 
 
 
 
**Chiffrement**
cryptage Input.csv Encrypted.csv
 
**Résultat (**Encrypted.csv **)**
ID;N_sejour;N_IPP;CP;Age;Tarif
 Integer;Integer;Symbolic;Symbolic;Integer;Real
 1;2422530;HeqPi34BQRtwn2HpNbQXp+2aXTlD6s2h9JTAquMGqAvWsjhGVA==;xGPx2RbV1oA...;37;2984
 2;2422592;Ig+sAargNQwZ8Usfl56i2KGQCtEzUpRU1oxb38dRzCBb08+P9Q==;5lMQf50RJDT...;15;1568
 3;2422985;1NypB/jH/1BH1dS3UiorHefe+KLWPmMHuSe+38mE1FVMskmxww==;+g11Noa/hSW...;74;8974
 
Les colonnes N_IPP et CP (Symbolic) sont chiffrées en base64. Les colonnes ID, N_sejour, Age et Tarif restent inchangées.
**Déchiffrement**
cryptage -d Encrypted.csv Decrypted.csv
 
**Résultat (**Decrypted.csv **) — identique à l'original**
ID;N_sejour;N_IPP;CP;Age;Tarif
 Integer;Integer;Symbolic;Symbolic;Integer;Real
 1;2422530;879856498;33740;37;2984
 2;2422592;317489412;33680;15;1568
 3;2422985;971433167;33121;74;8974
 
![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnEAAAACCAYAAAA3pIp+AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAANElEQVR4nO3OUQmAABBAsSeIWMICprwEpjSIFfwTYUuwZWaO6goAgL+412qrzq8nAAC8tj8tdQNNdXaCdAAAAABJRU5ErkJggg==)
**Sécurité**
- **AES-256-GCM** : chiffrement authentifié (confidentialité + intégrité)
- Chaque valeur utilise un **IV aléatoire unique** — chiffrer deux fois la même valeur produit un résultat différent
- La clé dérivée par mot de passe utilise **Argon2id** (résistant aux attaques par force brute)
- Le fichier cryptage.key doit être protégé (droits d'accès restrictifs, ne pas le transmettre par email)
![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnEAAAACCAYAAAA3pIp+AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAANklEQVR4nO3OMQ2AABAAsSNBACP6MMH6NpGACyywEZJWQZeZ2aszAAD+4l6rrTq+ngAA8Nr1AL+6BElk4wV6AAAAAElFTkSuQmCC)
 
 
**Workflow Amadea**
Base Amadea         Input.csv          cryptage.exe         Output.csv         Base Amadea
  (cryptée)     →    (extraction)    →   -d (déchiffre)   →  (en clair)    →   (mise à jour)
  (en clair)    →    (extraction)    →      (chiffre)     →  (chiffré)     →   (mise à jour)