| Allegro CL version 9.0 Moderately revised from 8.2. 8.2 version |
Arguments: context &key return
Finalize and return the SHA1 hash from context in a format determined by the return keyword argument.
return can be one of the following values:
:integer
(the default): the return value is an
integer of up to 160 bits representing the digest. Warning: note that
an integer representation of the digest potentially loses information
if the generated signature has leading octets containing only
zeroes. Care should be taking when using this return type if you
intend to further encode the signature (such as to a base64-encoded
string). See the example below.
cl-user(4): (setq c (sha1-init)) #S(excl::md-context :ctx 156672 :size 20) cl-user(5): (sha1-update c "foo") cl-user(6): (sha1-final c :return :usb8) #(11 238 199 181 234 63 15 219 201 93 ...) ;; Potential problem with :return :integer (or :return unspecified ;; as the default is :integer). The call is to SHA1-FILE which calls ;; SHA1-FINAL and returns the value SHA1-FINAL returns. ;; ;; Here we get the sha1 value in a shell: % openssl dgst -sha1 -hex cmp05-optdialog.jpg SHA1(cmp05-optdialog.jpg)= 9bd9c1bbd45ec006e281cf056227898c5996bb87 ;; Now we get it with SHA1-FILE: cl-user(17): (sha1-file "~/cmp05-optdialog.jpg") 889749707772052021200163874326026364472582912903 cl-user(18): (format t "~x" *) 9bd9c1bbd45ec006e281cf056227898c5996bb87 nil cl-user(19): ;; Note the hex values are the same but the leading 0 is not printed ;; by Lisp, which is dealing with the value as an integer. The leading ;; 0 is preserved when the :return is :hex: cl-user(21): (sha1-file "~/cmp05-optdialog.jpg" :return :hex) "9bd9c1bbd45ec006e281cf056227898c5996bb87" cl-user(22):
See MD*, SHA*, HMAC, and other message digest support in miscellaneous.htm. See also digest-final.
Copyright (c) 1998-2019, Franz Inc. Oakland, CA., USA. All rights reserved.
This page has had moderate revisions compared to the 8.2 page.
Created 2019.8.20.
| Allegro CL version 9.0 Moderately revised from 8.2. 8.2 version |