分享:用四十种语言分别写一个MD5算法 之4 Common Lisp语言MD5算法
2011-08-12 21:55
369 查看
分享:用四十种语言分别写一个MD5算法 之4 Common Lisp语言MD5算法
(require #+sbcl 'sb-md5 #-sbcl 'md5)
(defvar +letters+ "0123456789abcdef")
(defun octets->letters (octet-vector)
(with-output-to-string (stream)
(loop for i across octet-vector
do (flet ((foo (x) (aref +letters+ (ldb (byte x (- x 4)) i))))
(princ (foo 8) stream)
(princ (foo 4) stream)))))
(defun md5 (string)
(octets->letters #+sbcl (sb-md5:md5sum-string string)
#-sbcl (with-input-from-string (stream string)
(md5:md5sum-stream stream))))</pre>
CL-USER> (md5 "foo")
(require #+sbcl 'sb-md5 #-sbcl 'md5)
(defvar +letters+ "0123456789abcdef")
(defun octets->letters (octet-vector)
(with-output-to-string (stream)
(loop for i across octet-vector
do (flet ((foo (x) (aref +letters+ (ldb (byte x (- x 4)) i))))
(princ (foo 8) stream)
(princ (foo 4) stream)))))
(defun md5 (string)
(octets->letters #+sbcl (sb-md5:md5sum-string string)
#-sbcl (with-input-from-string (stream string)
(md5:md5sum-stream stream))))</pre>
CL-USER> (md5 "foo")
相关文章推荐
- 分享:用四十种语言分别写一个MD5算法 之28 Perl 6语言MD5算法
- 分享:用四十种语言分别写一个MD5算法 之15 J语言MD5算法
- 分享:用四十种语言分别写一个MD5算法 之4 Common Lisp语言MD5算法
- 分享:用四十种语言分别写一个MD5算法 之25 Octave语言MD5算法
- 分享:用四十种语言分别写一个MD5算法 之11 Frink语言MD5算法
- 分享:用四十种语言分别写一个MD5算法 之5 D语言MD5算法
- 分享:用四十种语言分别写一个MD5算法 之26 OpenEdge/Progres语言MD5算法
- 分享:用四十种语言分别写一个MD5算法 之12 Go语言MD5算法
- 分享:用四十种语言分别写一个MD5算法 之24 OCaml语言MD5算法
- 分享:用四十种语言分别写一个MD5算法 之11 Frink语言MD5算法
- 分享:用四十种语言分别写一个MD5算法 之39 MySQL语言MD5算法
- 分享:用四十种语言分别写一个MD5算法 之22 Nemerle语言MD5算法
- 分享:用四十种语言分别写一个MD5算法 之12 Go语言MD5算法
- 分享:用四十种语言分别写一个MD5算法 之32 PowerShell语言MD5算法
- 分享:用四十种语言分别写一个MD5算法 之40 Tcl语言MD5算法
- 分享:用四十种语言分别写一个MD5算法 之23 Objective-C语言MD5算法
- 分享:用四十种语言分别写一个MD5算法 之10 Forth语言MD5算法
- 分享:用四十种语言分别写一个MD5算法 之32 PowerShell语言MD5算法
- 分享:用四十种语言分别写一个MD5算法 之37 RLaB语言MD5算法
- 分享:用四十种语言分别写一个MD5算法 之20 MATLAB语言MD5算法