Sha256 Hashes in Lisp
In Lisp, we can compute SHA256 hashes using the ironclad library. SHA256 hashes are frequently used to compute short identities for binary or text blobs. For example, TLS/SSL certificates use SHA256 to compute a certificate’s signature. Here’s how to compute SHA256 hashes in Lisp.
(ql:quickload :ironclad)
(ql:quickload :babel)
(defun main ()
(let ((s "sha256 this string"))
;; Here we create a new SHA256 digest
(let ((digest (ironclad:make-digest :sha256)))
;; Update the digest with the bytes of the string
(ironclad:update-digest digest (babel:string-to-octets s))
;; This gets the finalized hash result as a byte array
(let ((result (ironclad:produce-digest digest)))
;; Print the original string and the hash
(format t "~a~%" s)
(format t "~(~{~2,'0x~}~)~%" (coerce result 'list))))))
(main)In this Lisp version:
We use the
ironcladlibrary for cryptographic functions andbabelfor string-to-byte conversion.We define a
mainfunction that demonstrates the SHA256 hashing process.We create a new SHA256 digest using
ironclad:make-digest :sha256.The
ironclad:update-digestfunction is used to feed the input string (converted to bytes) into the digest.We finalize the hash and get the result using
ironclad:produce-digest.Finally, we print the original string and the hash in hexadecimal format.
To run the program, save it in a file (e.g., sha256-hashes.lisp) and use your Lisp interpreter. Make sure you have Quicklisp installed and the required libraries are available.
$ sbcl --load sha256-hashes.lisp
sha256 this string
1af1dfa857bf1d8814fe1af8983c18080019922e557f15a8a...You can compute other hashes using a similar pattern to the one shown above. For example, to compute SHA512 hashes, you would use :sha512 instead of :sha256 when creating the digest.
Note that if you need cryptographically secure hashes, you should carefully research hash strength!
Comments powered by Disqus