BMP图片文件加密代码

    技术2022-05-11  75

    代码如下:     //说明:窗体上有两个Image、两个按钮、一个Edit(用于显示写了多少)。         //---------------------------------------------------------------------------         #include   <vcl.h>         #pragma   hdrstop         #include   "Unit1.h"     //---------------------------------------------------------------------------     #pragma   package(smart_init)     #pragma   resource   "*.dfm"     TForm1   *Form1;     //---------------------------------------------------------------------------     __fastcall   TForm1::TForm1(TComponent*   Owner)                     :   TForm(Owner)     {     }     //---------------------------------------------------------------------------         void   __fastcall   TForm1::Button1Click(TObject   *Sender)     {         TMemoryStream   *pms=new   TMemoryStream();         Image1->Picture->Bitmap->SaveToStream(pms);         int   N=pms->Size;         pms->Position=0;             char   *buffer=new   char[N+1]   ;             pms->ReadBuffer(buffer,N*sizeof(char));             //对数据进行加密;         //.....           //开始写文件               int   fhwnd;           String   sfile="PICME.DAT";           if   (!FileExists(sfile))           {                     fhwnd=FileCreate(sfile);                     FileClose(fhwnd);           }           fhwnd=FileOpen(sfile,fmOpenWrite);           FileSeek(fhwnd,0,2);         //移动到文件尾;           Edit1->Text   =   (sizeof(char)*N);           FileWrite(fhwnd,buffer,sizeof(char)*N);           FileClose(fhwnd);               delete   []buffer;               delete   pms;                 }     //---------------------------------------------------------------------------     void   __fastcall   TForm1::Button2Click(TObject   *Sender)     {             TMemoryStream   *pms=new   TMemoryStream();             String   sfile="PICME.DAT";             char   *buffer;                 int   fhwnd,   iFileLength,N;             fhwnd=FileOpen(sfile,fmOpenRead);             iFileLength   =   FileSeek(fhwnd,0,2);             FileSeek(fhwnd,0,0);             N=(iFileLength+1)/sizeof(char);             buffer=new   char[N+1];             FileRead(fhwnd,buffer,sizeof(char)*N);                 //对数据进行解密;             //...                 //             pms->Size=N;             pms->WriteBuffer(buffer,N*sizeof(char));             pms->Position=0;                     Image2->Picture->Bitmap->LoadFromStream(pms);             FileClose(fhwnd);             delete   []buffer;                         delete   pms;                         }     //---------------------------------------------------------------------------  

     

     

     其实,你如果要最最最简单的不让别人直接看出来,你把这二处:     FileSeek(……);     改成:       FileSeek(fhwnd,1024,0);     就完事。     这样,你存出来的图片因为不是从文件的第一个字节开始的,所以不合符标准,这样,别人就会发晕了。         当然,如果别人足够聪明,用十六进制软件打开生成的这个文件,然后猜出来了偏移量,那就没得说了,哈哈。  


    最新回复(0)