CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

请问各位有没有比较好的给avi文件加密的方法啊?

楼主query24(query24)2004-09-02 15:59:40 在 C++ Builder / 基础类 提问

有个想法是,将avi文件用二进制打开,然后改掉第一个数值。但是不知道具体如何进行,请大家帮帮忙 问题点数:50、回复次数:5Top

1 楼weill(每天提一问,一天学一点)回复于 2004-09-02 16:26:40 得分 50

二、直接I/O文件操作  
    这是C提供的另一种文件操作,它是通过直接存/取文件来完成对文件的处理,而上篇所说流式文件操作是通过缓冲区来进行;流式文件操作是围绕一个FILE指针来进行,而此类文件操作是围绕一个文件的“句柄”来进行,什么是句柄呢?它是一个整数,是系统用来标识一个文件(在WINDOWS中,句柄的概念扩展到所有设备资源的标识)的唯一的记号。此类文件操作常用的函数如下表,这些函数及其所用的一些符号在io.h和fcntl.h中定义,在使用时要加入相应的头文件。  
   
  函数   说明    
  open()   打开一个文件并返回它的句柄    
  close()   关闭一个句柄    
  lseek()   定位到文件的指定位置    
  read()   块读文件    
  write()   块写文件    
  eof()   测试文件是否结束    
  filelength()   取得文件长度    
  rename()   重命名文件    
  chsize()   改变文件长度    
   
    下面就对这些函数一一说明:  
   
  1.open()  
    打开一个文件并返回它的句柄,如果失败,将返回一个小于0的值,原型是int   open(const   char   *path,   int   access   [,   unsigned   mode]);   参数path是要打开的文件名,access是打开的模式,mode是可选项。表示文件的属性,主要用于UNIX系统中,在DOS/WINDOWS这个参数没有意义。其中文件的打开模式如下表。  
   
  符号   含义   符号   含义   符号   含义    
  O_RDONLY   只读方式   O_WRONLY   只写方式   O_RDWR   读/写方式    
  O_NDELAY   用于UNIX系统   O_APPEND   追加方式   O_CREAT   如果文件不存在就创建    
  O_TRUNC   把文件长度截为0   O_EXCL   和O_CREAT连用,如果文件存在返回错误   O_BINARY   二进制方式    
  O_TEXT   文本方式    
   
    对于多个要求,可以用"|"运算符来连接,如O_APPEND|O_TEXT表示以文本模式和追加方式打开文件。  
   
  例:int   handle=open("c:\\msdos.sys",O_BINARY|O_CREAT|O_WRITE)  
   
  2.close()  
    关闭一个句柄,原型是int   close(int   handle);如果成功返回0  
   
  例:close(handle)  
   
  3.lseek()  
    定位到指定的位置,原型是:long   lseek(int   handle,   long   offset,   int   fromwhere);参数offset是移动的量,fromwhere是移动的基准位置,取值和前面讲的fseek()一样,SEEK_SET:文件首部;SEEK_CUR:文件当前位置;SEEK_END:文件尾。此函数返回执行后文件新的存取位置。  
   
  例:  
   
    lseek(handle,-1234L,SEEK_CUR);//把存取位置从当前位置向前移动1234个字节。  
    x=lseek(hnd1,0L,SEEK_END);//把存取位置移动到文件尾,x=文件尾的位置即文件长度  
   
  4.read()  
    从文件读取一块,原型是int   read(int   handle,   void   *buf,   unsigned   len);参数buf保存读出的数据,len是读取的字节。函数返回实际读出的字节。  
   
  例:char   x[200];read(hnd1,x,200);  
   
  5.write()  
    写一块数据到文件中,原型是int   write(int   handle,   void   *buf,   unsigned   len);参数的含义同read(),返回实际写入的字节。  
   
  例:char   x[]="I   Love   You";write(handle,x,strlen(x));  
   
  7.eof()  
    类似feof(),测试文件是否结束,是返回1,否则返回0;原型是:int   eof(int   handle);  
   
  例:while(!eof(handle1)){……};  
   
  8.filelength()  
    返回文件长度,原型是long   filelength(int   handle);相当于lseek(handle,0L,SEEK_END)  
   
  例:long   x=filelength(handle);  
   
  9.rename()  
    重命名文件,原型是int   rename(const   char   *oldname,   const   char   *newname);   参数oldname是旧文件名,newname是新文件名。成功返回0  
   
  例:rename("c:\\config.sys","c:\\config.w40");  
   
  10.chsize();  
    改变文件长度,原型是int   chsize(int   handle,   long   size);参数size表示文件新的长度,成功返回0,否则返回-1,如果指定的长度小于文件长度,则文件被截短;如果指定的长度大于文件长度,则在文件后面补'\0'。  
   
  例:chsize(handle,0x12345);  
  Top

2 楼weill(每天提一问,一天学一点)回复于 2004-09-02 16:28:30 得分 0

要读写二进制数据块,使用成员函数read()和write()成员函数,它们原型如下:  
   
      read(unsigned   char   *buf,int   num);  
      write(const   unsigned   char   *buf,int   num);  
   
    read()从文件中读取   num   个字符到   buf   指向的缓存中,如果在还未读入   num   个字符时就到了文件尾,可以用成员函数   int   gcount();来取得实际读取的字符数;而   write()   从buf   指向的缓存写   num   个字符到文件中,值得注意的是缓存的类型是   unsigned   char   *,有时可能需要类型转换。  
   
  例:  
   
      unsigned   char   str1[]="I   Love   You";  
      int   n[5];  
      ifstream   in("xxx.xxx");  
      ofstream   out("yyy.yyy");  
      out.write(str1,strlen(str1));//把字符串str1全部写到yyy.yyy中  
      in.read((unsigned   char*)n,sizeof(n));//从xxx.xxx中读取指定个整数,注意类型转换  
      in.close();out.close();Top

3 楼weill(每天提一问,一天学一点)回复于 2004-09-02 16:29:29 得分 0

记得装个WinHexTop

4 楼query24(query24)回复于 2004-09-02 16:42:25 得分 0

弱弱地问一句:什么是WinHex?  
  我需要在bcb中实现对avi的加密。Top

5 楼weill(每天提一问,一天学一点)回复于 2004-09-02 20:39:37 得分 0

WinHex是最常用的16进制编辑器。用来观看你对文件的修改结果。  
   
  至于什么是16进制编辑器,你用了就明白了,如果还不明白,那么,找点计算机基础的书看吧。Top

相关问题

  • 请问文件加密的方法
  • 文件加密
  • 文件加密
  • NTFS分区下文件夹加密方法
  • asp.net配置文件中的连接字符串加密方法
  • 文件夹加密
  • 文件夹加密?
  • 文件夹加密?
  • 在问文件夹加密方法?UP无分,GZ无分,高手请进
  • 求加密方法

关键词

  • 文件
  • 函数
  • 原型
  • 二进制
  • 字符
  • 文件名
  • 句柄
  • 长度
  • 文件尾
  • 返回

得分解答快速导航

  • 帖主:query24
  • weill

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo