编程词典
明日图书
明日软件
用户注册
用户登录
站内
  当前位置:编程词典服务网 >> 编程词典社区论坛 >> 文件加密
  · 文件加密

用户:  明日科技
发帖:  417 篇
作品:  1 个
回复:  2 篇
技术分:  805 分
等级:  
注册:  2009-09-07 06:37:23



发表于:2010-06-11 08:56:38
          楼主

编程实现文件加密,具体要求如下:先从键盘中输入要加密操作的文件所在的路径及名称,再输入密码,最后输入加密后的文件要存储路径及名称。



                      (a)程序运行界面



            (b)加密前文档中的部分内容



      c)加密后文档中的内容

加密的算法思想如下:对文本文档中的内容进行加密,实质上就是读取该文档中的内容,对读出的每个字符与输入的密码进行异或,再将异或后的内容重新写入指定的磁盘文件中即可。

 

#include <stdio.h>                                                                                      /*标准输入输出头文件*/

#include <stdlib.h>

#include <string.h>

void encrypt(char *soucefile, char *pwd, char *codefile);                                     /*对文件进行加密的具体函数*/

void encrypt(char *s_file, char *pwd, char *c_file)                                    /*自定义函数encrypt用于加密*/

{

    int i = 0;

    FILE *fp1,  *fp2;                                                                       /*定义fp1fp2是指向结构体变量的指针*/

    register char ch;

    fp1 = fopen(s_file, "rb");

    if (fp1 == NULL)

    {

        printf("cannot open s_file.n");

        exit(1);                                                                               /*如果不能打开要加密的文件,便退出程序*/

    }

    fp2 = fopen(c_file, "wb");

    if (fp2 == NULL)

    {

        printf("cannot open or create c_file.n");

        exit(1);                                                                                        /*如果不能建立加密后的文件,便退出*/

    }

    ch = fgetc(fp1);

    while (!feof(fp1))                                                                                    /*测试文件是否结束*/

    {

        ch = ch ^ *(pwd + i);                                                                      /*采用异或方法进行加密*/

        i++;

        fputc(ch, fp2);                                                                                /*异或后写入fp2文件*/

        ch = fgetc(fp1);      

        if (i > 9)

            i = 0;

    }

    fclose(fp1);                                                                                          /*关闭源文件*/

    fclose(fp2);                                                                                          /*关闭目标文件*/

}

main(int argc, char *argv[])                                                                           /*定义main()函数的命令行参数*/

{

    char sourcefile[50];                                                                                /*用户输入的要加密的文件名*/

    char codefile[50];

    char pwd[10];                                                                                      /*用来保存密码*/

    if (argc != 4)                                                                                         /*容错处理*/

    {

        printf("please input encode file name:n");

        gets(sourcefile);                                                                             /*得到要加密的文件名*/

        printf("please input Password:n");

        gets(pwd);                                                                                    /*得到密码*/

        printf("please input saved file name:n");

        gets(codefile);                                                                                /*得到加密后你要的文件名*/

        encrypt(sourcefile, pwd, codefile);

    }

    else

    {

        strcpy(sourcefile, argv[1]);

        strcpy(pwd, argv[2]);

        strcpy(codefile, argv[3]);

        encrypt(sourcefile, pwd, codefile);

    }

}

 

 

 

本帖赏分:0 分   回复数:0 篇     
修改   删除   引用   回复
该帖暂无回复!
吉林省明日科技有限公司提供技术支持. 
Copyright © 1999-2008 吉林省明日科技有限公司. 吉ICP备10002740
当前时区 GMT+8, 今天是 
刷新页面 - 关于我们 - 设为首页