[crypticl-cvs] CVS crypticl/src

tskogan tskogan at common-lisp.net
Sat Jan 6 13:46:38 UTC 2007


Update of /project/crypticl/cvsroot/crypticl/src
In directory clnet:/tmp/cvs-serv24715

Modified Files:
	sha256.lisp 
Log Message:
The six logical functions.


--- /project/crypticl/cvsroot/crypticl/src/sha256.lisp	2007/01/06 12:58:08	1.1
+++ /project/crypticl/cvsroot/crypticl/src/sha256.lisp	2007/01/06 13:46:37	1.2
@@ -50,6 +50,33 @@
 ;;; SHA-256 uses six logical functions, where each function operates on 32-bit 
 ;;; words, which are represented as x, y, and z. The result of each function 
 ;;; is a new 32-bit word.
+;;;
+;;; Note on notation in the docstrings:
+;;; not is a bitwise not operation, also referred to as the complement
+;;; operation.
+(defun ch-256 (x y z)
+  "(x and y) xor (not x and z)"
+  (logxor (logand x y)
+	  (logand (lognot x) z)))
+
+(defun maj-256 (x y z)
+  "(x and y) xor (x and z) xor (y and z)"
+  (logxor (logand x y)
+	  (logand x z)
+	  (logand y z)))
+  
+(defun sum-0 (x)
+  "ROTR 2(x) xor ROTR 13(x) xor ROTR 22(x)"
+  (logxor (right-rot-32 x 2)
+	  (right-rot-32 x 13)
+	  (right-rot-32 x 22)))
+
+(defun sum-1 (x)
+  "ROTR 6(x) xor ROTR 11(x) xor ROTR 25(x)"
+  (logxor (right-rot-32 x 6)
+	  (right-rot-32 x 11)
+	  (right-rot-32 x 25)))
+  
 (defun sigma-0 (x)
   "ROTR 7(x) xor ROTR 18(x) xor SHR 3(x)"
   (logxor (right-rot-32 x 7)




More information about the Crypticl-cvs mailing list