101 lines
5.3 KiB
Markdown
101 lines
5.3 KiB
Markdown
**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
|
||

|
||
**Installation**
|
||
Copier cryptage.exe sur le poste Windows. Aucune installation requise.
|
||

|
||
**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
|
||
|
||

|
||
**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.
|
||

|
||
**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
|
||
|
||

|
||
**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)
|
||

|
||
|
||
|
||
**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)
|
||
|