?? cipher-3des.c
字號(hào):
do { w = (256 | *key++) << 2; do { --n; b1[n] = 8 & w; w >>= 1; b0[n] = 4 & w; } while ( w >= 16 ); } while ( n ); /* put the bits in the correct places */ n = 16; key = rotors; do { w = (b1[key[ 0 ]] | b0[key[ 1 ]]) << 4; w |= (b1[key[ 2 ]] | b0[key[ 3 ]]) << 2; w |= b1[key[ 4 ]] | b0[key[ 5 ]]; w <<= 8; w |= (b1[key[ 6 ]] | b0[key[ 7 ]]) << 4; w |= (b1[key[ 8 ]] | b0[key[ 9 ]]) << 2; w |= b1[key[10 ]] | b0[key[11 ]]; w |= (b1[key[12 ]] | b0[key[13 ]]) << 4; w |= (b1[key[14 ]] | b0[key[15 ]]) << 2; w |= b1[key[16 ]] | b0[key[17 ]]; w <<= 8; w |= (b1[key[18 ]] | b0[key[19 ]]) << 4; w |= (b1[key[20 ]] | b0[key[21 ]]) << 2; w |= b1[key[22 ]] | b0[key[23 ]]; method[0] = w; w = (b1[key[ 0+24]] | b0[key[ 1+24]]) << 4; w |= (b1[key[ 2+24]] | b0[key[ 3+24]]) << 2; w |= b1[key[ 4+24]] | b0[key[ 5+24]]; w <<= 8; w |= (b1[key[ 6+24]] | b0[key[ 7+24]]) << 4; w |= (b1[key[ 8+24]] | b0[key[ 9+24]]) << 2; w |= b1[key[10+24]] | b0[key[11+24]]; w <<= 8; w |= (b1[key[12+24]] | b0[key[13+24]]) << 4; w |= (b1[key[14+24]] | b0[key[15+24]]) << 2; w |= b1[key[16+24]] | b0[key[17+24]]; w <<= 8; w |= (b1[key[18+24]] | b0[key[19+24]]) << 4; w |= (b1[key[20+24]] | b0[key[21+24]]) << 2; w |= b1[key[22+24]] | b0[key[23+24]]; ROR(w, 4, 28); /* could be eliminated */ method[1] = w; key += 48; method += 2; } while ( --n ); return 0;}static void DesSmallFipsEncrypt (DesData d, DesKeys r, DesData s){ register u32 x, y, z; x = s [7]; x <<= 8; x |= s [6]; x <<= 8; x |= s [5]; x <<= 8; x |= s [4]; y = s [3]; y <<= 8; y |= s [2]; y <<= 8; y |= s [1]; y <<= 8; y |= s [0]; z = ((x >> 004) ^ y) & 0X0F0F0F0FL; x ^= z << 004; y ^= z; z = ((y >> 020) ^ x) & 0X0000FFFFL; y ^= z << 020; x ^= z; z = ((x >> 002) ^ y) & 0X33333333L; x ^= z << 002; y ^= z; z = ((y >> 010) ^ x) & 0X00FF00FFL; y ^= z << 010; x ^= z; x = x >> 1 | x << 31; z = (x ^ y) & 0X55555555L; y ^= z; x ^= z; y = y >> 1 | y << 31; z = r [0]; z ^= y; x ^= * (u32 *) ((u8 *) (des_keymap + 192) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 128) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 64) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) des_keymap + (0XFC & z)); z = r [1]; z ^= y; z = z << 4 | z >> 28; x ^= * (u32 *) ((u8 *) (des_keymap + 448) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 384) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 320) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 256) + (0XFC & z)); z = r [2]; z ^= x; y ^= * (u32 *) ((u8 *) (des_keymap + 192) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 128) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 64) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) des_keymap + (0XFC & z)); z = r [3]; z ^= x; z = z << 4 | z >> 28; y ^= * (u32 *) ((u8 *) (des_keymap + 448) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 384) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 320) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 256) + (0XFC & z)); z = r [4]; z ^= y; x ^= * (u32 *) ((u8 *) (des_keymap + 192) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 128) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 64) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) des_keymap + (0XFC & z)); z = r [5]; z ^= y; z = z << 4 | z >> 28; x ^= * (u32 *) ((u8 *) (des_keymap + 448) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 384) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 320) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 256) + (0XFC & z)); z = r [6]; z ^= x; y ^= * (u32 *) ((u8 *) (des_keymap + 192) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 128) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 64) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) des_keymap + (0XFC & z)); z = r [7]; z ^= x; z = z << 4 | z >> 28; y ^= * (u32 *) ((u8 *) (des_keymap + 448) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 384) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 320) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 256) + (0XFC & z)); z = r [8]; z ^= y; x ^= * (u32 *) ((u8 *) (des_keymap + 192) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 128) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 64) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) des_keymap + (0XFC & z)); z = r [9]; z ^= y; z = z << 4 | z >> 28; x ^= * (u32 *) ((u8 *) (des_keymap + 448) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 384) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 320) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 256) + (0XFC & z)); z = r [10]; z ^= x; y ^= * (u32 *) ((u8 *) (des_keymap + 192) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 128) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 64) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) des_keymap + (0XFC & z)); z = r [11]; z ^= x; z = z << 4 | z >> 28; y ^= * (u32 *) ((u8 *) (des_keymap + 448) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 384) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 320) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 256) + (0XFC & z)); z = r [12]; z ^= y; x ^= * (u32 *) ((u8 *) (des_keymap + 192) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 128) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 64) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) des_keymap + (0XFC & z)); z = r [13]; z ^= y; z = z << 4 | z >> 28; x ^= * (u32 *) ((u8 *) (des_keymap + 448) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 384) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 320) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 256) + (0XFC & z)); z = r [14]; z ^= x; y ^= * (u32 *) ((u8 *) (des_keymap + 192) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 128) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 64) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) des_keymap + (0XFC & z)); z = r [15]; z ^= x; z = z << 4 | z >> 28; y ^= * (u32 *) ((u8 *) (des_keymap + 448) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 384) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 320) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 256) + (0XFC & z)); z = r [16]; z ^= y; x ^= * (u32 *) ((u8 *) (des_keymap + 192) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 128) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 64) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) des_keymap + (0XFC & z)); z = r [17]; z ^= y; z = z << 4 | z >> 28; x ^= * (u32 *) ((u8 *) (des_keymap + 448) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 384) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 320) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 256) + (0XFC & z)); z = r [18]; z ^= x; y ^= * (u32 *) ((u8 *) (des_keymap + 192) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 128) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 64) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) des_keymap + (0XFC & z)); z = r [19]; z ^= x; z = z << 4 | z >> 28; y ^= * (u32 *) ((u8 *) (des_keymap + 448) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 384) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 320) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 256) + (0XFC & z)); z = r [20]; z ^= y; x ^= * (u32 *) ((u8 *) (des_keymap + 192) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 128) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 64) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) des_keymap + (0XFC & z)); z = r [21]; z ^= y; z = z << 4 | z >> 28; x ^= * (u32 *) ((u8 *) (des_keymap + 448) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 384) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 320) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 256) + (0XFC & z)); z = r [22]; z ^= x; y ^= * (u32 *) ((u8 *) (des_keymap + 192) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 128) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 64) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) des_keymap + (0XFC & z)); z = r [23]; z ^= x; z = z << 4 | z >> 28; y ^= * (u32 *) ((u8 *) (des_keymap + 448) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 384) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 320) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 256) + (0XFC & z)); z = r [24]; z ^= y; x ^= * (u32 *) ((u8 *) (des_keymap + 192) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 128) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 64) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) des_keymap + (0XFC & z)); z = r [25]; z ^= y; z = z << 4 | z >> 28; x ^= * (u32 *) ((u8 *) (des_keymap + 448) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 384) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 320) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 256) + (0XFC & z)); z = r [26]; z ^= x; y ^= * (u32 *) ((u8 *) (des_keymap + 192) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 128) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 64) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) des_keymap + (0XFC & z)); z = r [27]; z ^= x; z = z << 4 | z >> 28; y ^= * (u32 *) ((u8 *) (des_keymap + 448) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 384) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 320) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 256) + (0XFC & z)); z = r [28]; z ^= y; x ^= * (u32 *) ((u8 *) (des_keymap + 192) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 128) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 64) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) des_keymap + (0XFC & z)); z = r [29]; z ^= y; z = z << 4 | z >> 28; x ^= * (u32 *) ((u8 *) (des_keymap + 448) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 384) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 320) + (0XFC & z)); z >>= 8; x ^= * (u32 *) ((u8 *) (des_keymap + 256) + (0XFC & z)); z = r [30]; z ^= x; y ^= * (u32 *) ((u8 *) (des_keymap + 192) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 128) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 64) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) des_keymap + (0XFC & z)); z = r [31]; z ^= x; z = z << 4 | z >> 28; y ^= * (u32 *) ((u8 *) (des_keymap + 448) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 384) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 320) + (0XFC & z)); z >>= 8; y ^= * (u32 *) ((u8 *) (des_keymap + 256) + (0XFC & z)); x = x << 1 | x >> 31; z = (x ^ y) & 0X55555555L; y ^= z; x ^= z; y = y << 1 | y >> 31; z = ((x >> 010) ^ y) & 0X00FF00FFL; x ^= z << 010; y ^= z; z = ((y >> 002) ^ x) & 0X33333333L; y ^= z << 002; x ^= z; z = ((x >> 020) ^ y) & 0X0000FFFFL; x ^= z << 020; y ^= z; z = ((y >> 004) ^ x) & 0X0F0F0F0FL; y ^= z << 004; x ^= z; d [0] = x; x >>= 8; d [1] = x; x >>= 8; d [2] = x; x >>= 8; d [3] = x; d [4] = y; y >>= 8; d [5] = y; y >>= 8; d [6] = y; y >>= 8; d [7] = y; return;}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -