📄 make_p.c
字号:
/* * $Source: /mit/kerberos/src/lib/des/RCS/make_p.c,v $ * $Author: jtkohl $ * * Copyright 1985, 1988 by the Massachusetts Institute of Technology. * * For copying and distribution information, please * see the file <mit-copyright.h>. * * This routine generates the P permutation code for the DES. */#include <mit-copyright.h>#include <stdio.h>#include "des_internal.h"#include "tables.h"void gen(stream) FILE *stream;{ /* P permutes 32 bit input R1 into 32 bit output R2 */ /* clear the output */ fprintf(stream," L2 = 0;\n");#ifndef BIG fprintf(stream," R2 = 0;\n"); fprintf(stream, "/* P operations */\n/* from right to right */\n"); /* first list mapping from left to left */ for (i = 0; i <=31; i++) if (P[i] < 32) fprintf(stream, " if (R1 & (1<<%d)) R2 |= 1<<%d;\n",P[i],i);#else /* BIG */ /* flip p into p_temp */ fprintf(stream," P_temp = R1;\n"); fprintf(stream," P_temp_p = (unsigned char *) &P_temp;\n"); #ifdef LSBFIRST fprintf(stream," R2 = P_prime[0][*P_temp_p++];\n"); fprintf(stream," R2 |= P_prime[1][*P_temp_p++];\n"); fprintf(stream," R2 |= P_prime[2][*P_temp_p++];\n"); fprintf(stream," R2 |= P_prime[3][*P_temp_p];\n");#else /* MSBFIRST */ fprintf(stream," R2 = P_prime[3][*P_temp_p++];\n"); fprintf(stream," R2 |= P_prime[2][*P_temp_p++];\n"); fprintf(stream," R2 |= P_prime[1][*P_temp_p++];\n"); fprintf(stream," R2 |= P_prime[0][*P_temp_p];\n");#endif /* MSBFIRST */#endif /* BIG */}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -