动态网站制作指南
[  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 软件工程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ 软件工程 ]的信息



本月文章推荐
.微软新版开发工具VS 2008 beta2功.
.领域模型驱动设计(DDD)之模型提炼.
.软件与并发巨变 不得不面对的革命.
.软件架构训练基础教程之使用标准.
.在运行时使用 UDDI.
.Linux的用户进程是如何使用内存的.
.软件的架构与设计模式之什么是架.
.SOA对集中数据的作用.
.BEA:2006 SOA步入实用年.
.J2EE项目中开发团队的组建.
.企业架构和SOA架构的角色将融合.
.需求分析方法.
.BEA推出架构集成和SOA管理方面的.
.解析UML的要点与应用.
.VS.NET2005中用C++开发Native代码.
.VRML与JAVA在网络课件交互运用.
.Iona:新Artix ESB 强调增量式SOA.
.实现基于IDEA算法的加密工具(目录.
.解析UML工作流管理系统(1).
.规划SOA(3)进行长期SOA规划.

实现基于IDEA算法的加密工具(8)

文章类别:软件工程 | 发表日期:2008-3-23 |




3.6.1 加密工具实现源代码

下面列出按照上述操作思路编写的实现源代码


/**********************************************************************/

/*-文件名:idea.c */

/*- */

/*-功能: 利用idea加密算法实现文件的加密 */

/*- */

/*-说明: */

/*- 这是利用IDEA算法实现的文件加密工具可以在法律答应范围内以非商 */

/*-业形式自由使用,该程序的所有权利由作者吴真保留 */

/*- */

/*-版本号:1.0.0(2002.6) */

/*-AUTHOR:吴真(WUZHEN) */

/*- */

/*********************************************************************/

#include

#include

#include

#include

#include

#include "idea.h"


typedef int INT32;

typedef char INT8;

typedef unsigned char ULONG8;

typedef unsigned short ULONG16;

typedef unsigned long ULONG32;


#define SUCCESS 0

#define FAIL -1


#define WZ_COMMEND_NUM 4

#define WZUSEHELPNUM 7

#define READFILESIZE 512 /*一次从文件中读取多少字节,可以根据内存的大小调节*/

INT32 file_enc( FILE *readfile, FILE *writefile,ULONG8 *key);/*加密文件*/

INT32 file_dec( FILE *readfile, FILE *writefile,ULONG8 *key);/*解密文件*/

INT32 hextofile( ULONG8 *buf ,FILE *writefile, ULONG32 length);/*以16进制写入文件*/

INT32 encodehex(ULONG8 *tobuf,ULONG8 *frombuf,ULONG32 len);/*16进制解码*/

void wz_printhelp();/*打印帮助*/


INT8 *WZ_Commend_Help[] =

{


"基于IDEA的加密解密工具v1.0 ",/*0*/

"追求卓越,勇于创新 ",

"----著者 : 吴真--- ",

" "

};


INT8 *WZ_USE_HELP[]={

"输入5个参数:",

"\t1.可执行文件名 *.exe",

"\t2.操作类型 1:加密;2:解密;",

"\t3.读出数据的文件名*.txt",

"\t4.写入数据的文件名*.txt",

"\t5.密钥(32字节)",

"******************************"

};


 

void main(INT32 argc,INT8 *argv[])

{

INT8 *FILENAME1,*FILENAME2;

FILE *fp, *fp2;

ULONG8 key[33] = { 0 }; /*密钥容器*/

if ( argc != 5 )

{

wz_printhelp();

return;

}

FILENAME1 = argv[2];

FILENAME2 = argv[3];

if ((fp= fopen(FILENAME1,"r+b")) == NULL (fp2 = fopen(FILENAME2,"w+b"))==NULL)

{

printf("Can't open file\n");

return ;

}

memcpy( key, argv[4] , strlen( argv[4]) );/*取得密钥*/

switch( atoi(argv[1] ))

{

case 1:/*加密操作*/

file_enc(fp,fp2,key);

printf("\n \t IDEA 加密完毕,密文存于%s文件\n",FILENAME2);

break;


case 2:

/*解密*/

file_dec(fp,fp2,key);

printf("\n\t IDEA解密完毕,明文存于%s文件\n",FILENAME2);

break;

default:

printf("请选择是加密解密 plese choose encryptdeencrypt\n");

break;

}


fclose(fp);

fclose(fp2);



}


INT32 hextofile( ULONG8 *buf ,FILE *writefile, ULONG32 length)

{

ULONG32 writelen = 0 ;

/*以16进制形式写入文件*/

while( writelen < length)

{

if(buf[writelen] == 0)

{

fprintf( writefile, "%x", 0 );

fprintf( writefile, "%x", 0 );

}

else if (buf[writelen] < 0x10)

{

fprintf( writefile, "%x", 0 );

fprintf( writefile, "%x", buf[writelen] );

}

else

{

fprintf( writefile, "%x", buf[writelen] );


}

writelen++;


}

return SUCCESS;

}


INT32 file_enc( FILE *readfile, FILE *writefile,ULONG8 *key)

{

INT32 filelen = 0,readlen = 0,writelen = 0;

ULONG32 totalfilelen = 0 ;/*统计实际的文件的长度*/

INT32 i;

ULONG8 readbuf[READFILESIZE] = { 0 };

idea_makekey( (ULONG32*)key , outkey);

filelen = fread( readbuf, sizeof( INT8 ), READFILESIZE, readfile );

while( filelen == READFILESIZE )

{

totalfilelen += READFILESIZE;

for ( i = 0 ; i < READFILESIZE ; i += 8)

{

idea_enc( (ULONG16*)&readbuf[i] );/*加密*/

}

hextofile( readbuf, writefile, READFILESIZE );/*以16进制形式写入文件*/

memset(readbuf,0,READFILESIZE);

filelen = fread( readbuf, sizeof( INT8 ), READFILESIZE, readfile );

}

/*这是从文件中读出的最后一批数据,长度可能会等于0,所以要先判定*/


if ( filelen > 0 )

{

/*假如从文件中读出的长度不等于0,那么肯定有8个字节以上的空间

文件长度存在最后8个字节中*/

totalfilelen += filelen;

memcpy( &readbuf[READFILESIZE-8], (ULONG8*)&totalfilelen,4);

for ( i = 0 ; i < READFILESIZE ; i += 8)

{

idea_enc( (ULONG16*)&readbuf[i]);/*加密*/

}

hextofile( readbuf, writefile,READFILESIZE );/*以16进制形式写入文件*/

memset(readbuf,0 ,READFILESIZE);

}

else /*filelen == 0*/

{

memcpy( &readbuf[0], (ULONG8*)&totalfilelen,4);

idea_enc( (ULONG16*)&readbuf[0] );/*加密*/

hextofile( readbuf, writefile, 8);/*以16进制形式写入文件*/

}

return SUCCESS;

}


INT32 file_dec( FILE *readfile, FILE *writefile,ULONG8 *key)

{

INT32 filelen = 0,readlen = 0,writelen = 0;

ULONG32 totalfilelen = 0 ;/*统计实际的文件的长度*/

INT32 i,num;

ULONG8 readbuf[READFILESIZE] = { 0 };

ULONG8 sendbuf[READFILESIZE*2] = { 0 };


idea_makekey( (ULONG32*)key , outkey);

key_decryEXP(outkey);


fseek(readfile,-16,SEEK_END);/*最后16个字节的表示文件长度的空间*/

filelen = fread( sendbuf, sizeof( INT8 ), 16, readfile );


encodehex( readbuf,sendbuf,8);

idea_dec( (ULONG16*)&readbuf[0] );/*解密*/

memcpy((ULONG8*)&totalfilelen, &readbuf[0],4);/*得到文件总长*/

memset(readbuf,0 ,8);

memset(sendbuf,0 ,16);


num = totalfilelen/READFILESIZE;/*有几个READFILESIZE组*/

totalfilelen %= READFILESIZE;


fseek(readfile,0,SEEK_SET);/*跳到文件头*/

while(num--)

{

filelen = fread( sendbuf, sizeof( INT8 ), READFILESIZE*2, readfile );

encodehex( readbuf,sendbuf,READFILESIZE);

for ( i = 0 ; i < READFILESIZE ; i += 8)

{

idea_dec( (ULONG16*)&readbuf[i] );/*解密*/

}

writelen = fwrite(readbuf, sizeof( INT8 ), READFILESIZE, writefile);

memset(readbuf,0 ,READFILESIZE);

memset(sendbuf,0 ,READFILESIZE*2);

}

if ( totalfilelen > 0 )/*最后一块有多余的元素*/

{

filelen = fread( sendbuf, sizeof( INT8 ), READFILESIZE*2, readfile );

encodehex( readbuf,sendbuf,READFILESIZE);

for ( i = 0 ; i < READFILESIZE ; i += 8)

{

idea_dec( (ULONG16*)&readbuf[i] );/*解密*/

}

writelen = fwrite(readbuf, sizeof( INT8 ), totalfilelen, writefile);

memset(readbuf,0 ,READFILESIZE);

memset(sendbuf,0 ,READFILESIZE*2);


}

return SUCCESS;

}


INT32 encodehex(ULONG8 *tobuf,ULONG8 *frombuf,ULONG32 len)

{

ULONG8 *readfirst = frombuf ;

ULONG8 *readend = &frombuf[1] ;

INT8 *s;

ULONG8 y[2] ;

ULONG32 i;

for ( i = 0 ; i < len ; i++)

{

y[0] = *readfirst ;

y[1] = *readend ;

readfirst += 2 ;

readend += 2 ;

tobuf[i] = (ULONG8)strtol((INT8*)y, &s, 16);

}

return SUCCESS;

}


void wz_printhelp()

{

INT32 i ;

printf("\t");

for ( i = 0 ; i < 22 ; i++)

{

printf("%c ",5);

}

printf("\n");

for( i = 0 ; i < WZ_COMMEND_NUM ; i++)

{

printf("\t%c\t%s %c\n",5,WZ_Commend_Help[i],5);

}

printf("\t");

for ( i = 0 ; i < 22 ; i++)

{

printf("%c ",5);

}

printf("\n");

for( i = 0 ; i < WZUSEHELPNUM ; i++)

{

printf("\t%s\n",WZ_USE_HELP[i]);

}

return ;

}


上一篇:谈谈软件项目管理的重要性目录 人气:86
下一篇:实现基于IDEA算法的加密工具(6) 人气:167
点击此处浏览全部软件工程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-5-21 仿中华网简单调查系统
2008-5-21 耐恩Wap下载网站系统 v1.0
2008-5-21 福建新闻小偷(DIV+CSS) v2 3.1
2008-5-21 超级美化阿波罗DJ程序 v1.1
2008-5-21 海涯英文视频网整站 v1.0
2008-5-21 在线考试系统源码及论文
2008-5-21 网奇IOS智能在线订单系统 ASP.NE
2008-5-21 网奇IOS智能在线订单系统 ASP.NE
2008-5-21 tom911免费电影完美版本-带自定义
2008-5-7 Windows XP SP3 官方英文版
2008-5-7 Windows XP SP3 官方香港中文版
2008-5-7 Windows XP SP3 官方繁体中文版
2008-5-7 Windows XP SP3 官方简体中文版
2008-4-30 Multiple Unzip Wizard 1.02
2008-4-30 Multiple Unrar Wizard 1.0.0
2008-4-30 WinZip Install/Try/Uninstall a
2008-4-30 ZIP压缩文件修复器WzipFix 2.0
2008-4-30 Pentazip 6.01 Build 189 For Wi
  发表评论
姓 名: 验证码: [ 全部贴吧 ] [ 浏览评论 ]
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報