diff options
author | Vivien Kraus <vivien@planete-kraus.eu> | 2022-12-29 12:07:56 +0100 |
---|---|---|
committer | Vivien Kraus <vivien@planete-kraus.eu> | 2022-12-29 16:03:34 +0100 |
commit | e58efa14c1497fa27433cd4d71ad5824e376b1a1 (patch) | |
tree | df103062e7b7797c320aac4bd542249c0196d076 /org | |
parent | a37d792b4840a3810c688fd254b3f745d0082c51 (diff) |
Hourra pour le hachage avec gnutls+guile !
Diffstat (limited to 'org')
-rw-r--r-- | org/_posts/2022-12-29-on-peut-maintenant-hacher-des-données-avec-gnutls-et-guile.org | 60 | ||||
-rw-r--r-- | org/images/twinky.jpg | bin | 0 -> 356134 bytes |
2 files changed, 60 insertions, 0 deletions
diff --git a/org/_posts/2022-12-29-on-peut-maintenant-hacher-des-données-avec-gnutls-et-guile.org b/org/_posts/2022-12-29-on-peut-maintenant-hacher-des-données-avec-gnutls-et-guile.org new file mode 100644 index 0000000..d6592ae --- /dev/null +++ b/org/_posts/2022-12-29-on-peut-maintenant-hacher-des-données-avec-gnutls-et-guile.org @@ -0,0 +1,60 @@ +#+options: toc:nil + +#+begin_export html +--- +layout: default +title: On peut maintenant hacher des données avec GnuTLS + Guile ! +excerpt: La cryptographie, c’est compliqué. En Guile Scheme, ça l’est encore plus ! Heureusement, on peut utiliser GnuTLS en Guile. +--- +#+end_export + +Chers amis des chats et du lisp, bonjour. Je me présente : Twinky. Je +reprends ce blog afin de continuer le travail de mon prédécesseur : +vous transmettre la passion des chats et du développement +informatique. + +[[file:../../../code/images/twinky.jpg]] + +Aujourd’hui, je vous informe que l’humain a agrémenté le code de +gnutls/guile [[https://gitlab.com/gnutls/guile/-/merge_requests/5][avec les fonctions de hachage]]. Ou devrais-je dire, les +fonctions de chachage ? À vous de juger. Le programme [[exemple-hash]] +montre ce qu’on peut faire avec ! Sympa, non ? + +#+name: exemple-hash +#+caption: Exemple d’utilisation de la fonction de hachage +#+begin_src scheme :eval no + (use-modules (gnutls) (ice-9 match) (rnrs bytevectors) + (srfi srfi-26)) + + (define chiffre->hex + (cute string-ref "0123456789abcdef" <>)) + + (define (chiffres->hex . chiffres) + (list->string (map chiffre->hex chiffres))) + + (define (octet->hex octet) + (call-with-values + (cute euclidean/ octet 16) + chiffres->hex)) + + (define octets->hex + (cute map octet->hex <>)) + + (define (->hex octets) + (string-join (octets->hex (bytevector->u8-list octets)) "")) + + (let* ((message "Bonjour les amis des chats !") + (condensat (hash-direct digest/sha256 (string->utf8 message)))) + (format #t "Quand je hache « ~a », j’obtiens : + ,#+begin_example + ~a + ,#+end_example" + message (->hex condensat))) +#+end_src + +#+begin_src shell :eval yes :exports results :results output drawer :noweb yes + guile -s <(cat <<EOF + <<exemple-hash>> + EOF + ) +#+end_src diff --git a/org/images/twinky.jpg b/org/images/twinky.jpg Binary files differnew file mode 100644 index 0000000..bbeb2d0 --- /dev/null +++ b/org/images/twinky.jpg |