⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testcfb.c

📁 des算法的一种升级算法
💻 C
字号:
#include <stdio.h>
#include <string.h>
#include "des.h"

#define MAXBUFSIZE 	8192

int bufSize = 3;

char plain[MAXBUFSIZE], cipher[MAXBUFSIZE];

char ivbits[]  = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef };
char keybits[] = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef };

char *progName;

extern int getopt();
extern int optind;
extern char *optarg;

int main(argc, argv)
   int argc;
   char *argv[];
{
   int exitCode = 0;
   char *chp;
   int ch, rcount, ivsize, wcount, decr = 0;
   keyType key = (keyType) 0;
   char iv[DES_BLOCKSIZE];

   progName = *argv;
   if ((chp = strrchr(progName, '/')) != (char *) 0) progName = chp+1;

   while ((ch = getopt(argc, argv, "ds:")) != EOF) switch (ch) {
   case 's':
      wcount = sscanf(optarg, "%d", &bufSize);
      if (wcount != 1) goto usage;
      break;
   case 'd':
      decr++;
      break;
   case '?':
   default:
usage:
      fprintf(stderr, "usage: %s [ -d ] [ -s bufsize ]\n", progName);
      return 1;
   }
   argc -= optind;
   argv += optind;

   if (argc != 0) goto usage;

   ivsize = DES_BLOCKSIZE;
   memcpy(iv, ivbits, ivsize);
   desMakeKey(&key, keybits, DES_BLOCKSIZE, 0);
   do {
      rcount = read(0, plain, bufSize);
      if (rcount <= 0) break;
      ivsize = desCFB(cipher, plain, rcount, iv, ivsize, key, decr);
      wcount = write(1, cipher, rcount);
   } while (1);

   return exitCode;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -