42 56, 48, 40, 32, 24, 16, 8, 0,
43 57, 49, 41, 33, 25, 17, 9, 1,
44 58, 50, 42, 34, 26, 18, 10, 2,
46 62, 54, 46, 38, 30, 22, 14, 6,
47 61, 53, 45, 37, 29, 21, 13, 5,
48 60, 52, 44, 36, 28, 20, 12, 4,
53 13, 16, 10, 23, 0, 4, 2, 27,
54 14, 5, 20, 9, 22, 18, 11, 3,
55 25, 7, 15, 6, 26, 19, 12, 1,
56 40, 51, 30, 36, 46, 54, 29, 39,
57 50, 44, 32, 47, 43, 48, 38, 55,
58 33, 52, 45, 41, 49, 35, 28, 31
62 57, 49, 41, 33, 25, 17, 9, 1,
63 59, 51, 43, 35, 27, 19, 11, 3,
64 61, 53, 45, 37, 29, 21, 13, 5,
65 63, 55, 47, 39, 31, 23, 15, 7,
66 56, 48, 40, 32, 24, 16, 8, 0,
67 58, 50, 42, 34, 26, 18, 10, 2,
68 60, 52, 44, 36, 28, 20, 12, 4,
69 62, 54, 46, 38, 30, 22, 14, 6
73 7, 39, 15, 47, 23, 55, 31, 63,
74 6, 38, 14, 46, 22, 54, 30, 62,
75 5, 37, 13, 45, 21, 53, 29, 61,
76 4, 36, 12, 44, 20, 52, 28, 60,
77 3, 35, 11, 43, 19, 51, 27, 59,
78 2, 34, 10, 42, 18, 50, 26, 58,
79 1, 33, 9, 41, 17, 49, 25, 57,
80 0, 32, 8, 40, 16, 48, 24, 56
84 31, 0, 1, 2, 3, 4, 3, 4,
85 5, 6, 7, 8, 7, 8, 9, 10,
86 11, 12, 11, 12, 13, 14, 15, 16,
87 15, 16, 17, 18, 19, 20, 19, 20,
88 21, 22, 23, 24, 23, 24, 25, 26,
89 27, 28, 27, 28, 29, 30, 31, 0
95 15, 6, 19, 20, 28, 11, 27, 16,
96 0, 14, 22, 25, 4, 17, 30, 9,
97 1, 7, 23, 13, 31, 26, 2, 8,
98 18, 12, 29, 5, 21, 10, 3, 24
103 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,
104 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,
105 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,
106 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13
109 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,
110 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,
111 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,
112 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9
115 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,
116 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,
117 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,
118 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12
121 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,
122 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,
123 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,
124 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14
127 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,
128 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,
129 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,
130 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3
133 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,
134 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,
135 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,
136 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13
139 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,
140 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,
141 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,
142 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12
145 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,
146 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,
147 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,
148 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11
158 for (; n--; pc++, a++)
164register char *nachr_l, *nachr_r;
169 register char *tp = tmp;
170 register char *e =
E;
173 for (i = 0; i < 8; i++) {
174 for (j = 0, sbval = 0; j < 6; j++)
175 sbval = (sbval << 1) | (nachr_r[(
int)*e++] ^ *schl++);
176 sbval =
S_BOX[i][sbval];
177 for (tp += 4, j = 4; j--; sbval >>= 1)
183 for (i = 0; i <
BS2; i++)
184 *nachr_l++ ^= tmp[(
int)*e++];
216 register unsigned int ls = 0x7efc;
217 register int i, j, k;
218 register int shval = 0;
219 register char *akt_schl;
224 for (i = 0; i < 16; i++) {
225 shval += 1 + (ls & 1);
227 for (j = 0; j <
KS; j++) {
228 if ((k =
PC2[j]) >=
IS2) {
229 if ((k += shval) >=
IS)
231 }
else if ((k += shval) >=
IS2)
233 *akt_schl++ = tmp1[k];
240crypt(
const char *wort,
const char *salt)
242 static char retkey[14];
248 memset(key, 0,
BS + 2);
250 for (k = key, i = 0; i <
BS; i++) {
251 if (!(keybyte = *wort++))
254 for (j = 0; j < 7; j++, i++) {
262 memset(key, 0,
BS + 2);
264 for (k =
E, i = 0; i < 2; i++) {
265 retkey[i] = keybyte = *salt++;
267 keybyte -=
'a' -
'Z' - 1;
269 keybyte -=
'A' -
'9' - 1;
272 for (j = 0; j < 6; j++, keybyte >>= 1, k++) {
281 for (i = 0; i < 25; i++)
284 for (k = key, i = 0; i < 11; i++) {
285 for (j = keybyte = 0; j < 6; j++) {
292 keybyte +=
'A' -
'9' - 1;
294 keybyte +=
'a' -
'Z' - 1;
295 retkey[i + 2] = keybyte;
void encrypt(char *nachr, int decr)
static void perm(char *a, char *e, char *pc, int n)
static void crypt_main(char *nachr_l, char *nachr_r, char *schl)
char * crypt(const char *wort, const char *salt)
static char schluessel[16][KS]