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

📄 testcfb.c

📁 des算法实现源码
💻 C
字号:
#define _POSIX_SOURCE#include <unistd.h>	/* POSIX: read write */#include <stdlib.h>	/* for getopt */#include <stdio.h>#include <string.h>#include "des.h"#define MAXBUFSIZE 	8192int bufSize = 3;char plain[MAXBUFSIZE], cipher[MAXBUFSIZE];unsigned char ivbits[]  = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef };unsigned char keybits[] = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef };char *progName;#if defined(__STDC__) || defined(__cplusplus)#if defined(__cplusplus)extern "C" {#endifint getopt(int, char * const [], const char *);  /* AES_SOURCE: <stdlib.h> */#if defined(__cplusplus)}#endif#elseextern int getopt();#endifextern 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, (char *) 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 + -