如何对流的内容进行加密或者解密操作
流的操作加解密操作(文件流和内存流)
1)文件在以内存流方式写入文件前先加密内存流再写入文件
2)读取内存流的信息时先解密内存流,再读取相关数据
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

解决方案 »

  1.   

    流中的数据结构
       文字   姓名    王一        (是必选项)
       数据   年龄    25         (是必选项)
       图片   照片    王一照片    (不是必选项,是可有可无的
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
      

  2.   


    //==================================================================
    //函数名:Encrypt //Decrypt
    //作者:
    //功能:字符串加密、解密函数
    //==================================================================
    function Encrypt(str:string):string; //加密
    var
      s : string[255];
      c : array[0..255] of Byte absolute s;
      i:Integer;
    begin
      s:=str;
      For i:=1 to ord(s[0]) do
       c[i] := i XOr c[i];
      result:=s;
    end;function Decrypt(str:string):string;  //解密
    var
      s : string[255];
      c : array[0..255] of Byte absolute s;
      i:Integer;
    begin
      s:=str;
      For i:=1 to Length(s) do
      s[i] := chr(i XOr ord(s[i]));
      result:=s;
    end;
      

  3.   

    我的处理的内存流是以<记录集结构>方式处理的
    结构如下:
    由于程序中内部的重新设计结构如下: 
    type        //定义记录集[结构] 
      TstudentClass=^Tmystudent; 
        Tmystudent=record 
        Versnum:string;      //数据库的版本号(比如这个为Ver:1.40) 
        xh:string[8];        //学号, 
        xm:string[8];        //姓名 
        yw,sx:integer;        //定义科目 
        JPGsize:integer;  //图片大小 
        JPGfile:pchar;    //图片内容 
    end; 
      

  4.   

    比方说:
    public
      mystud:Tmystudent;
          .
          .
          .
    //得到用户操作的数据
    //function Encrypt(str:string):string; //加密
        Encrypt(mystud);
        write(mystud);//写入文件
    //function Decrypt(str:string):string;  //解密
        read(mystud); //读取信息
        Decrypt(mystud);
    //返回到相应的信息表中
      

  5.   

    给你写了一个简单的加解函数,不过只是对每个byte进行简单的异或运算,如果觉得不够安全自己可以改一下:
    procedure jm(const Source;var Dest;Count:Integer;const Key:ShortString);
    var s,d,k:pchar;
        i,j:integer;
        len:Byte;
    begin
      s:=pchar(@Source);
      d:=pchar(@Dest);
      k:=pchar(@Key[1]);
      len:=length(Key);
      for i:=0 to Count-1 do
      begin
        j:=i mod len;
        d[i]:=chr(ord(s[i]) xor ord(k[j]) xor len);
      end;
    end;用法:
    procedure TForm7.Button2Click(Sender: TObject);
    Type
      PRec=^TRec;
      TRec=Record
        a:Integer;
        b:String[20];
      end;
    var s,d:TRec;
        Buf:Pchar;
        Key:String;
    begin
      s.a:=1000;
      s.b:='中国abc';
      Key:='abcdef';
      //加密
      getMem(Buf,sizeof(TRec));
      jm(s,Buf^,SizeOf(TRec),Key);//加密后的结果放到Buf里
      showmessageFmt('%d %s',[PRec(Buf)^.a,PRec(Buf)^.b]);//显示加密后的结果
      //解密
      jm(Buf^,d,sizeof(TRec),Key);
      showmessageFmt('%d %s',[d.a,d.b]);//显示解密后的结果
      freeMem(Buf);
    end;
      

  6.   

    这样能处理这个吗
       JPGsize:integer;  //图片大小 
        JPGfile:pchar;    //图片内容