summaryrefslogtreecommitdiff
path: root/org
diff options
context:
space:
mode:
authorVivien Kraus <vivien@planete-kraus.eu>2022-12-29 12:07:56 +0100
committerVivien Kraus <vivien@planete-kraus.eu>2022-12-29 16:03:34 +0100
commite58efa14c1497fa27433cd4d71ad5824e376b1a1 (patch)
treedf103062e7b7797c320aac4bd542249c0196d076 /org
parenta37d792b4840a3810c688fd254b3f745d0082c51 (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.org60
-rw-r--r--org/images/twinky.jpgbin0 -> 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
new file mode 100644
index 0000000..bbeb2d0
--- /dev/null
+++ b/org/images/twinky.jpg
Binary files differ