D’une commande à une observation reproductible
Une commande est utile en cours lorsque l’observation attendue est claire à l’avance. Cet exercice reprend une partie de mon support « PowerShell verstehen » : créer un petit fichier connu, examiner son condensat, puis ne changer que la fin de ligne. On relie ainsi la somme de contrôle aux octets réellement stockés.
Les exemples visent PowerShell 7. Ils ne nécessitent ni droits administrateur, ni scripts externes, ni modification de la politique d’exécution. Ils créent un dossier d’exercice au nom aléatoire dans le répertoire temporaire. Les fichiers restent disponibles pour vérification.
1. Créer un fichier test précisément défini
Nous écrivons exactement les trois octets ASCII de abc. Le fichier initial ne dépend ainsi pas des réglages textuels d’un éditeur.
$demoRoot = Join-Path ([IO.Path]::GetTempPath()) (
'hash-demo-' + [Guid]::NewGuid().ToString('N')
)
[IO.Directory]::CreateDirectory($demoRoot) | Out-Null
$demoFile = Join-Path $demoRoot 'abc.txt'
[IO.File]::WriteAllBytes($demoFile, [byte[]](0x61, 0x62, 0x63))
Get-Item -LiteralPath $demoFile |
Select-Object Name, Length, FullName
La longueur doit être de trois octets. Le nom du dossier change à chaque exécution. -LiteralPath traite le nom du fichier littéralement ; les crochets, par exemple, ne sont pas interprétés comme des motifs de recherche.
2. Calculer et comparer le condensat
Get-FileHash renvoie notamment l’algorithme, le condensat et le chemin. Le fichier est lu pour le calcul. L’exemple précise explicitement l’algorithme. Les détails figurent chez Microsoft pour Get-FileHash.
$actual = Get-FileHash -LiteralPath $demoFile -Algorithm SHA256
$expected = 'BA7816BF8F01CFEA414140DE5DAE2223' +
'B00361A396177A9CB410FF61F20015AD'
$actual | Select-Object Algorithm, Hash, Path
$actual.Hash -eq $expected
La comparaison doit renvoyer True . La valeur attendue correspond à l’entrée définie à l’étape 1. Pour un téléchargement réel, je l’obtiendrais d’une source fiable. Une valeur recalculée n’est pas une référence indépendante de l’origine.
3. Ajouter uniquement une fin de ligne
Nous créons maintenant deux autres fichiers. Leur texte visible reste abc, mais leurs suites d’octets diffèrent.
$lfFile = Join-Path $demoRoot 'abc-lf.txt'
$crlfFile = Join-Path $demoRoot 'abc-crlf.txt'
[IO.File]::WriteAllBytes($lfFile, [byte[]](0x61, 0x62, 0x63, 0x0A))
[IO.File]::WriteAllBytes(
$crlfFile, [byte[]](0x61, 0x62, 0x63, 0x0D, 0x0A)
)
Get-ChildItem -LiteralPath $demoRoot -File |
Get-FileHash -Algorithm SHA256 |
Select-Object Hash, Path
Trois condensats différents doivent apparaître. Les fichiers font trois, quatre et cinq octets. LF ajoute un octet, CRLF deux. Un condensat différent ne signifie donc pas à lui seul que le contenu visible a sensiblement changé.
L’encodage compte aussi pour vos fichiers texte. Windows PowerShell et les versions récentes ont des réglages par défaut différents pour plusieurs commandes textuelles. Les octets explicites évitent ces différences ici. Dans un processus textuel, choisissez consciemment l’encodage et les fins de ligne. Microsoft : encodage des caractères
4. Traiter le résultat comme un objet
$actual.Hash accède à une propriété de l’objet résultat. Le tableau affiché représente cet objet. Il n’est pas nécessaire de découper une ligne d’écran selon les espaces pour comparer la valeur. C’est un avantage pratique du pipeline PowerShell.
$actual | Get-Member
$actual.Hash.Length
La valeur hexadécimale doit comporter 64 caractères. Je ne formaterais l’affichage qu’à la fin. Après des commandes de formatage, on ne manipule plus les mêmes propriétés métier que dans l’objet résultat initial.
Comment j’examinerais les différences
Je contrôlerais d’abord le chemin complet : a-t-on lu le bon fichier ? Puis sa taille, ses fins de ligne, son encodage et éventuellement un nouvel export. Un fichier peut aussi changer entre deux contrôles : il faut donc noter l’heure et la version.
Cet exercice utilise des fichiers test connus. Il ne parcourt pas les dossiers de travail et ne modifie aucun fichier existant. En cours, notez avant chaque étape la longueur ou propriété attendue, puis comparez. Une attente erronée révèle utilement une hypothèse encore floue.
Vérification de cette version
Les quatre blocs ont été exécutés ensemble le 18 septembre 2026 avec PowerShell 7.6.6 sur un Mac Apple Silicon. La comparaison du condensat de abc a renvoyé True; les fichiers faisaient trois, quatre et cinq octets, avec trois valeurs SHA-256 différentes. Le condensat hexadécimal comportait 64 caractères. Cela documente cette exécution précise ; les autres systèmes n’ont pas été testés séparément pour cette version.
Que peut-on en conclure ?
Nous avons obtenu le condensat attendu pour une suite d’octets définie et constaté que l’ajout de fins de ligne produit d’autres valeurs. Cette observation est concrète et reproductible. Elle ne vérifie ni les logiciels malveillants, ni l’auteur, ni l’exactitude du fond.
Le contexte est expliqué dans Comprendre SHA-256. La confidentialité et l’origine conduisent ensuite au chiffrement et aux signatures numériques.
Lire et conserver en PDF
Un exercice sur SHA-256, les fins de ligne et les objets résultats. L’édition compacte contient le texte, les exemples et les sources. Les éléments interactifs restent dans la version web.
Télécharger le PDF · 3 pages · 78 Ko DE
Raphael Lugmayr · 18 septembre 2026 · Version 1.0. Pour les recommandations et références, utilisez cette page, qui contient aussi les révisions et ressources complémentaires.
Somme de contrôle de cette édition PDF
SHA-256 compare les octets téléchargés avec cette édition. Un condensat sur le même site ne confirme pas indépendamment l’origine.
14807330d07c918570ecdd8fdd815f74f1cf443fea3caf706aba96aea10ed596Sources et approfondissement
Projets associés
Pour poursuivre
Comprendre SHA-256 : des octets au condensat
Pourquoi un condensat SHA-256 comporte 64 caractères hexadécimaux, le rôle des octets et ce que démontre une somme de contrôle. Avec exemples, démonstration et PDF.
Hachage, chiffrement et signature numérique : les différences
Somme de contrôle, confidentialité et origine vérifiable répondent à des besoins différents. Un guide de choix pour les fichiers, sauvegardes et protocoles logiciels.
Du prototype à l’exploitation : les points à clarifier avant un usage réel
Une application fonctionne. Mais qui la suit, détecte les erreurs et restaure les données ? Six questions pour passer de la démonstration au quotidien.