各位大侠:
我在做的是通过Delphi对SQL sever中的数据加密,并将密文送回数据库中。老师要求实现文字和图像的加密。现在我遇到的问题是Delphi取得图像是二进制的,加密算法要求的是字符串,我该如何转换一下?还有加密后的字符串又该如何转换回二进制?

解决方案 »

  1.   

    二进制?就是1和0你想要取得字符串直接转换应该可以吧?IntToStr(0)
      

  2.   

    就是我从数据库中取了一张图片,应该是二进制的吧,因为加密算法要求用char型,所以要转换一下才可以,但是我不会转换。
    真的谢谢你哦~~
      

  3.   

    有时候 Pchar (C++/c中的char *)
    并不一定代表串,其实就是一个指向byte类型的指针。如果你不明白,把你要加密的数据类型,加密函数的定义贴出来,我写给你看。
      

  4.   

    加密用的是DES加密算法加密函数encryption(string);
    就是要从数据库中取一张图片,然后送到这个函数里面,加密后再送回数据库。谢谢~~
      

  5.   

    图片->流
    SetLength(S, Stream.Size);
    Stream.Write(S[1], Stream.Size);
      

  6.   

    上面弄错了var
      BMP: TBitmap;
      S: string;
      MS: TMemoryStream;
    begin
      BMP := TBitmap.Create;
      MS := TMemoryStream.Create;
      try
        //...读取图片
        BMP.SaveToStream(MS);
        MS.Position := 0;
        SetLength(S, MS.Size);
        MS.ReadBuffer(S[1], MS.Size);
        //加密S
      finally
        BMP.Free;
        MS.Free;
      end;
    end;
      

  7.   

    假如你的加密函数是这样的
    function encryption(value: string): string;那么二进制数据是可以直接放入到string中的例如:var
      s: string;
      data: ?????; //你的数据
    begin
      SetLength(s, 1024);    //为s分配缓冲区域
      Move(data, s[1], ???); //???是你的数据长度
      encryption(s);          
    end;
    前提不说清楚,很难说明白。
      

  8.   

    这个需要看相关的函数是否支持二进制加密。DES是需要字节数对齐的,如果不是针对二进制处理过的话,可能会解不出原文,即解出来会多出几个字节。