我在做一个程序时用到了MD5编码,我用Indy组件的MD5,可是结果不正确,请高手指点:
代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
  AStr: String;
  Dest: String;
begin
  SetLength(AStr, 32);
  IdCoderMD51.AutoCompleteInput := True;
  Dest := IdCoderMD51.CodeString(Edit1.Text);
  Dest := Copy(Dest, Pos(';', Dest) + 1, 16);
  BinToHex(PChar(Dest), PChar(AStr),16);
  Edit2.Text := BinToPrintable(Dest[1], 16);
end;
当Edit1.Text = ''时是正确的,当Edit1.text = 'a' 时就不对了(应该是0cc175b9c0f1b6a831c399e269772661结果却是3A389D88A349727C6751E9ACAE0B0F37)
急用!!!!!

解决方案 »

  1.   

    自己写:
    http://www.chinaithr.com/bbs/bbs11/5.xml
      

  2.   

    procedure TForm1.BtnMd5Click(Sender: TObject);
    var
      s:string;
    begin
    IdCoderMD51.Reset;
    IdCoderMD51.CodeString(Edit1.Text); 
    s:=IdCoderMD51.CompletedInput;
    caption:=s;
    end;
      

  3.   

    我用的是AutoComplete啊。改用CompleteInput也不行:
    var
      s:string;
      S2: String;
    begin
      IdCoderMD51.Reset;
      IdCoderMD51.AutoCompleteInput := True;
      s:=IdCoderMD51.CodeString(Edit1.Text);
      s := Copy(s, Pos(';', S), 16);
      SetLength(S2, 32);
      BinToHex(PChar(S), PChar(S2), 16);
      Edit2.Text := S2;
    end;
    结果一样。
    决定改用plainsong提供的资料了。结贴。