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.
Aujourd’hui, je vous informe que l’humain a agrémenté le code de gnutls/guile avec les fonctions de hachage1. Ou devrais-je dire, les fonctions de chachage ? À vous de juger. Le programme 1 montre ce qu’on peut faire avec ! Sympa, non ?
(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)))
Quand je hache « Bonjour les amis des chats ! », j’obtiens :
37ab62b986405a49b0ac6849afb8db7fa9193814c4693bf1ff30e6803b2ed406
Footnotes:
1
Notez que depuis l’écriture de cet article, la nouvelle version 3.7.12 a été publiée avec ces changements.