当前位置:三九宝宝网 → 宝宝教育 → 教学论文 → 正文

DES加密算法C语言实现

更新:01-03 整理:39baobao.com
字体:

[VB或C的蚁群算法源码]//建议使用vc2005以上的编译器,加油!!~!#include #include #include #include #include using namespace std; const int iAntCount=34;//蚂蚁数量 const int iCityCount=51;//城...+阅读

/*********************************************************************//*-文件名:des.h *//*- *//*-功能: 实现DES加密算法的加密解密功能 *//*********************************************************************/typedef int INT32;typedef char INT8;typedef unsigned char ULONG8;typedef unsigned short ULONG16;typedef unsigned long ULONG32;/*如果采用c++编译器的话采用如下宏定义 #define DllExport extern "C" __declspec(dllexport)*/#define DllExport __declspec(dllexport)/*加密接口函数*/DllExport INT32 DdesN(ULONG8 *data, ULONG8 **key, ULONG32 n_key,ULONG32 readlen);DllExport INT32 desN(ULONG8 *data, ULONG8 **key, ULONG32 n_key,ULONG32 readlen);DllExport INT32 des3(ULONG8 *data, ULONG8 *key,ULONG32 n ,ULONG32 readlen);DllExport INT32 Ddes3(ULONG8 *data,ULONG8 *key,ULONG32 n ,ULONG32 readlen);DllExport INT32 des(ULONG8 *data, ULONG8 *key,INT32 readlen);DllExport INT32 Ddes(ULONG8 *data,ULONG8 *key,INT32 readlen);*********************************************************************//*-文件名:des.c *//*- *//*-功能: 实现DES加密算法的加密解密功能 *///*********************************************************************/#include#include#include#include#include#include "des.h"#define SUCCESS 0 #define FAIL -1#define READFILESIZE 512#define WZ_COMMEND_NUM 4#define WZUSEHELPNUM 19#define DESONE 1#define DESTHREE 2#define DESMULTI 3INT8 *WZ_Commend_Help[] ={ "基于DES的加密解密工具v1.0 ",/*0*/ "追求卓越,勇于创新 ", "----著者 : 吴真--- ", " " };INT8 *WZ_USE_HELP[]={ "输入5+n个参数:", "\t1.可执行文件名 *.exe", "\t2.操作类型 1:一层加密;2:一层解密;", "\t\t13:N层单密钥加密;23:N层单密钥解密;", "\t\t39:N层多密钥加密;49:N层多密钥解密", "\t3.读出数据的文件名*.txt", "\t4.写入数据的文件名*.txt", "\t5.密钥(8字节例如:wuzhen12)", "\t[6].N层单密钥的层数或者...二层加密|解密密钥", "\t[7].三层加密|解密密钥", "\t[8]. ...", "\t[N].N层加密|解密密钥", "\t 例1: des 1 1.txt 2.txt 12345678", "\t : des 2 2.txt 3.txt 12345678", "\t 例2: des 13 1.txt 2.txt tiantian 5", "\t : des 23 2.txt 3.txt tiantian 5", "\t 例3: des 39 1.txt 2.txt 12345678 tiantian gaoxinma", "\t : des 49 2.txt 3.txt 12345678 tiantian gaoxinma", "******************************"};INT32 hextofile( ULONG8 *buf ,FILE *writefile, ULONG32 length);/*以16进制写入文件*/INT32 encodehex(ULONG8 *tobuf,ULONG8 *frombuf,ULONG32 len);/*16进制解码*/INT32 file_enc(FILE *readfile,FILE *writefile, ULONG8 *key,ULONG32 keynum, ULONG8 **superkey,ULONG32 n_superkey, ULONG8 flag);INT32 file_dec(FILE *readfile,FILE *writefile, ULONG8 *key,ULONG32 keynum, ULONG8 **superkey,ULONG32 n_superkey, ULONG8 flag);void wz_print_help();INT32 main(INT32 argc,INT8 *argv[]){ INT8 *FILENAME1,*FILENAME2; FILE *fp, *fp2; ULONG8 *key ; ULONG8 **superkey ;/*n层加密解密密钥*/ ULONG8 n_superkey ; ULONG32 num; if ( argc >= 5 & (atoi(argv[1]) == 39 || atoi(argv[1]) == 49 ) ) { n_superkey = argc - 4 ; superkey = ( INT8 **)calloc(1, n_superkey*sizeof( void *) ) ; for ( num = 0 ; num0) { } else if ( argc == 5 & ( atoi(argv[1]) == 1 || atoi(argv[1]) == 2 )) { } else { wz_print_help(); return FAIL; } FILENAME1 = argv[2]; FILENAME2 = argv[3]; if ((fp= fopen(FILENAME1,"rb")) == NULL || (fp2 = fopen(FILENAME2,"wb"))==NULL) { printf("Can't open file\n"); return FAIL; } key = argv[4] ; switch( atoi(argv[1] )) { case 1: /*加密*/ file_enc(fp,fp2,key,0, NULL,0, DESONE); printf("\n \tDES 一层加密完毕,密文存于%s文件\n",FILENAME2); break; case 2: file_dec(fp,fp2,key,0, NULL, 0,DESONE); printf("\n \tDES 一层解密完毕,密文存于%s文件\n",FILENAME2); break; case 13: file_enc(fp,fp2,key,atoi(argv[5]),NULL,0,DESTHREE); printf("\n \tDES %u层单密钥加密完毕,密文存于%s文件\n",atoi(argv[5]),FILENAME2); break; case 23: file_dec(fp,fp2,key,atoi(argv[5]),NULL,0,DESTHREE); printf("\n \tDES %u层单密钥解密完毕,密文存于%s文件\n",atoi(argv[5]),FILENAME2); break; case 39: file_enc(fp,fp2,NULL,0,superkey,n_superkey,DESMULTI); printf("\n \tDES 多密钥加密完毕,密文存于%s文件\n",FILENAME2); free(superkey); superkey = NULL; break; case 49: file_dec(fp,fp2,NULL,0,superkey,n_superkey,DESMULTI); printf("\n \tDES 多密钥加密完毕,密文存于%s文件\n",FILENAME2); free(superkey); superkey = NULL; break; default: pri...

本文地址:https://www.39baobao.com/show/29_22109.html

以上内容来自互联网,请自行判断内容的正确性。若本站收录的信息无意侵犯了贵司版权,请联系我们,我们会及时处理和回复,谢谢.

以下为关联文档:

求人工智能蚁群算法的核心代码/*ant.c*/#define SPACE 0x20#define ESC 0x1b#define ANT_CHAR_EMPTY '+'#define ANT_CHAR_FOOD 153#define HOME_CHAR 'H'#define FOOD_CHAR 'F'#define FOOD_CHAR2 'f'#d...

蚁群算法是什么蚁群算法简介 2006-11-2 12:17:00 这两天上课....老师总是提到蚁群算法....听起来似乎很有意思......找到一篇简介.....放在这里有兴趣的朋友...参考一下........ 程序开始...

蚁群算法的相关研究跟着蚂蚁的踪迹,你找到了什么?通过上面的原理叙述和实际操作,我们不难发现蚂蚁之所以具有智能行为,完全归功于它的简单行为规则,而这些规则综合起来具有下面两个方面的特点: 1、多...

关于蚁群算法应用的英文翻译找不到翻译,给你一个算法吧!该程序试图对具有31个城市的VRP进行求解,已知的最优解为784.1,我用该程序只能优化到810左右,应该是陷入局部最优,但我不知问题出在什么地方。请用过蚁...

Prim算法c语言表示求源程序。。。。。。。。我原来自己写的模板 //朴素prim算法 //复杂度 O(n^2) //flag[SIZE] 顶点标记 //mindis[SIZE] 当前最短距离 //dis[SIZE][SIZE] 任意两点间距离 邻接矩阵表示 int prim() { m...

c语言选排列算法该函数求得是自由组合数,输出是An取k的所有可能组合 #include <stdio.h> int n,k,a[10]; long count=0; void perm2(int j) { int i,p,t; if(j==k) //执行条件j=k { for(i=k;...

C语言选择法排序算法问题循环开始 遍历数组 选择j(j初始为0)个元素 赋值p=j循环判断i( j+1到n内)比最小的数 即嵌套循环一旦发现a[p]>a[i]则p=i保持p一直是最小值内层循环结束后可得整个数组前(n-j)个...

数据结构算法c语言迷宫求解注释非常详细,希望对你有所帮助。#include#include#define M 15 #define N 15 struct mark //定义迷宫内点的坐标类型 { int x; int y; }; struct Element //"恋"栈元素,嘿嘿。...

C语言写的迷宫遍历问题没学数据结构写的算法是how to program#include#define X_start 2#define Y_start 0//换了个顺序 #define up 0#define down 2#define right 1#define left 3void mazeTraverse(char maze[][12],int x_start,int...