Home | History | Annotate | Download | only in des

Lines Matching refs:block

35 // Encrypt one block from src into dst, using the subkeys.
40 // Decrypt one block from src into dst, using the subkeys.
80 // general purpose function to perform DES block permutations
81 func permuteBlock(src uint64, permutation []uint8) (block uint64) {
84 block |= bit << uint((len(permutation)-1)-position)
113 func permuteInitialBlock(block uint64) uint64 {
114 // block = b7 b6 b5 b4 b3 b2 b1 b0 (8 bytes)
115 b1 := block >> 48
116 b2 := block << 48
117 block ^= b1 ^ b2 ^ b1<<48 ^ b2>>48
119 // block = b1 b0 b5 b4 b3 b2 b7 b6
120 b1 = block >> 32 & 0xff00ff
121 b2 = (block & 0xff00ff00)
122 block ^= b1<<32 ^ b2 ^ b1<<8 ^ b2<<24 // exchange b0 b4 with b3 b7
124 // block is now b1 b3 b5 b7 b0 b2 b4 b7, the permutation:
135 b1 = block & 0x0f0f00000f0f0000
136 b2 = block & 0x0000f0f00000f0f0
137 block ^= b1 ^ b2 ^ b1>>12 ^ b2<<12
139 // block is the permutation:
149 b1 = block & 0x3300330033003300
150 b2 = block & 0x00cc00cc00cc00cc
151 block ^= b1 ^ b2 ^ b1>>6 ^ b2<<6
153 // block is the permutation:
164 b1 = block & 0xaaaaaaaa55555555
165 block ^= b1 ^ b1>>33 ^ b1<<33
167 // block is the permutation:
176 return block
181 func permuteFinalBlock(block uint64) uint64 {
184 b1 := block & 0xaaaaaaaa55555555
185 block ^= b1 ^ b1>>33 ^ b1<<33
187 b1 = block & 0x3300330033003300
188 b2 := block & 0x00cc00cc00cc00cc
189 block ^= b1 ^ b2 ^ b1>>6 ^ b2<<6
191 b1 = block & 0x0f0f00000f0f0000
192 b2 = block & 0x0000f0f00000f0f0
193 block ^= b1 ^ b2 ^ b1>>12 ^ b2<<12
195 b1 = block >> 32 & 0xff00ff
196 b2 = (block & 0xff00ff00)
197 block ^= b1<<32 ^ b2 ^ b1<<8 ^ b2<<24
199 b1 = block >> 48
200 b2 = block << 48
201 block ^= b1 ^ b2 ^ b1<<48 ^ b2>>48
202 return block
239 // Expand 48-bit input to 64-bit, with each 6-bit block padded by extra two bits at the top.