linux下文件加密小程序



#include <stdio.h>
#include <fcntl.h>
#include <string.h>


#define BUF_SIZE   1024

/********************************************************************
 * 函数名:encrypt_file                               
 * 功 能:     linux下对文件加密及解密                    
 * 参 数:  char *rpath为源文件路径及文件名            
 *               char *wpath为加密后的文件要保存的路径及名称
 *               int secret_key为加密密码                   
 * 返回值:  0表示成功,-1表示失败                                          
 ********************************************************************/

int encrypt_file(char *rpath,char *wpath,int secret_key)
{
    int i = 0;
    int Readfd,Writefd;
    int Writebytes;
    int Readbytes = 1;
    char buf[BUF_SIZE];
   
    Readfd = open(rpath,O_RDWR);
    if(Readfd<0)
    {
        printf("open file failed\n");
        return -1;
    }
   
    Writefd = open(wpath,O_RDWR|O_CREAT|O_APPEND);
    if(Writefd<0)
    {
        printf("open file failed\n");
        return -1;
    }   
    while(Readbytes)
    {
        memset(buf,0,sizeof(buf));
        Readbytes = read(Readfd,buf,sizeof(buf));
        printf("Readbytes=%d\n",Readbytes);
        for(i=0;i<Readbytes;i++)
        {
            buf[i] = buf[i] ^ secret_key;
        }
        if(Readbytes)
        {
            Writebytes = write(Writefd,buf,Readbytes);
            printf("Writebytes=%d\n",Writebytes);
        }
    }
    return 0;
}

int main(int argc,char *argv[])
{
    int ret = 0;
    int SecretKey = 0;
    char *ReadPath;
    char *WritePath;

    ReadPath  = argv[1];
    WritePath = argv[2];
    SecretKey = (int)argv[3];

    if(4 == argc)
    {
        ret = encrypt_file(ReadPath,WritePath,SecretKey);
        if(ret < 0)
        {
            printf("encrypt file failed\n");
            return -1;
        }
    }
    else
    {
        printf("input param error,please input again!\n");
    }
    return 0;
}

/********************************************************************
使用说明:                                                  
             加密过程:                                        
             gcc encpypt.c  -o   encrypt                     
            ./encrypt  a.c  b.c  123xyz                      
                                                           
            解密过程:                                        
            ./encrypt  b.c  c.c 123xyz                       
                                                           
说明: a.c为源文件,b.c为加密后的文件,c.c为解密后的文件,  
        即a.c和c.c是一样的,123xyz为密码                     
        后缀为.c,.o,.h,.d等等任何文件都可加密,包括txt文档   
**********************************************************************/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
写了个linux平台加密程序ende 共两个程序 (一) 用tar打包压缩一个文件夹后用openssl的AES256加密 #!/bin/bash # Use openssl to encrypt one folder. # # Usage: # en infolder # Result: # infolder.tar.gz.aes256cbc # # Note: # 1) tar zcvf => openssl # 2) Don't use space in folder[or path]! # # Version: # v0.1[20110721] # Author: # JEF [dungeonsnd@126.com] # (二) 用openssl的AES256-cbc解密一个文件成一个tar.gz包,然后解包成一个文件夹 #!/bin/bash # Use openssl to decrypt one folder. # Usage: # en InFolder.tar.gz.aes256cbc # Note: # 1) Don't use space in InFolder! # 2) openssl => tar zxvf # # # Version: # v0.1[20110721] # Author: # JEF [dungeonsnd@126.com] # ============================================================== (三) 使用试例 view plain dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t> ll total 4 drwxr-xr-x 2 dnd users 4096 Jul 22 11:46 myfolder dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t> cd myfolder/ dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t/myfolder> ll total 8 -rw-r--r-- 1 dnd users 4 Jul 22 11:46 infile2.txt -rw-r--r-- 1 dnd users 21 Jul 22 11:46 infile.txt dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t/myfolder> cat infile.txt abc你好?? !!好啊 dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t/myfolder> cat infile2.txt aaa dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t/myfolder> cd .. dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t> ll total 4 drwxr-xr-x 2 dnd users 4096 Jul 22 11:46 myfolder dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t> en myfolder/ =========================================== [Now,tar will compress myfolder to myfolder.tar.gz,please wait......] myfolder/ myfolder/infile.txt myfolder/infile2.txt =========================================== [Now,openssl will encrypt myfolder.tar.gz to myfolder.tar.gz.aes256cbc,please wait......] enter aes-256-cbc encryption password: Verifying - enter aes-256-cbc encryption password: =========================================== [Now,script finished successfully!] dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t> dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t> ll total 8 drwxr-xr-x 2 dnd users 4096 Jul 22 11:46 myfolder -rw-r--r-- 1 dnd users 325 Jul 22 13:14 myfolder.tar.gz.aes256cbc dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t> mv myfolder myfolder.bk dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t> ll total 8 drwxr-xr-x 2 dnd users 4096 Jul 22 11:46 myfolder.bk -rw-r--r-- 1 dnd users 325 Jul 22 13:14 myfolder.tar.gz.aes256cbc dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t> de myfolder.tar.gz.aes256cbc =========================================== [Now,openssl will decrypt myfolder.tar.gz.aes256cbc to myfolder.tar.gz,please wait......] enter aes-256-cbc decryption password: =========================================== [Now,tar will extract myfolder.tar.gz to myfolder.,please wait......] myfolder/ myfolder/infile.txt myfolder/infile2.txt =========================================== [Now,script finished successfully!] dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t> ll total 12 drwxr-xr-x 2 dnd users 4096 Jul 22 11:46 myfolder drwxr-xr-x 2 dnd users 4096 Jul 22 11:46 myfolder.bk -rw-r--r-- 1 dnd users 325 Jul 22 13:14 myfolder.tar.gz.aes256cbc dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t> cd myfolder dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t/myfolder> ll total 8 -rw-r--r-- 1 dnd users 4 Jul 22 11:46 infile2.txt -rw-r--r-- 1 dnd users 21 Jul 22 11:46 infile.txt dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t/myfolder> cat infile.txt abc你好?? !!好啊 dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t/myfolder> cat infile2.txt aaa dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t/myfolder> dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t/myfolder> ll /usr/bin/en -rwxr-xr-x 1 root root 827 Jul 22 13:00 /usr/bin/en dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t/myfolder> ll /usr/bin/de -rwxr-xr-x 1 root root 715 Jul 22 13:00 /usr/bin/de dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t/myfolder> 可以看到,加密一个文件夹使用如下命令: en foldername 而解决刚才的文件夹使用如下命令 de filename 另外,如果想使用另外的加密算法要改这两个脚本。目前是使用openssl库的,AES256-cbc. 所以你的linux机器上一定要安装成功openssl(直接在终端敲入"openssl",如果成功进入openssl程序则说明安装好了openssl了,那么这两个脚本可以直接用,否则要先到openssl官网下载并安装之). 详细用法见作者博客。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值