Base64编码到底是什么东东,哪里有它的 编码和解码的源代码,哪位大虾能透露一下

解决方案 »

  1.   

    给我发消息,告诉我你的Email地址。我发给你
      

  2.   

    转贴:NMSMTP的密码认证解决方案 
    const 
    BaseTable = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; function EncodeBase64(Source:string):string; 
    var 
    Times, LenSrc, i: Integer; 
    x1, x2, x3, x4: Char; 
    xt: Byte; 
    begin 
    Result := ''; 
    LenSrc := Length(Source); 
    if LenSrc mod 3 = 0 then 
    Times := LenSrc div 3 
    else 
    Times := LenSrc div 3 + 1; 
    for i := 0 to Times - 1 do 
    begin 
    if LenSrc >= (3 + i * 3) then 
    begin 
    x1 := BaseTable[(ord(Source[1 + i * 3]) shr 2)+1]; 
    xt := (ord(Source[1 + i * 3]) shl 4) and 48; 
    xt := xt or (ord(Source[2 + i * 3]) shr 4); 
    x2 := BaseTable[xt + 1]; 
    xt := (Ord(Source[2 + i * 3]) shl 2) and 60; 
    xt := xt or (Ord(Source[3 + i * 3]) shr 6); 
    x3 := BaseTable[xt + 1]; 
    xt := (ord(Source[3 + i * 3]) and 63); 
    x4 := BaseTable[xt + 1]; 
    end 
    else if LenSrc >= (2 + i * 3) then 
    begin 
    x1 := BaseTable[(Ord(Source[1 + i * 3]) shr 2) + 1]; 
    xt := (Ord(Source[1 + i * 3]) shl 4) and 48; 
    xt := xt or (Ord(Source[2 + i * 3]) shr 4); 
    x2 := BaseTable[xt + 1]; 
    xt := (Ord(Source[2 + i * 3]) shl 2) and 60; 
    x3 := BaseTable[xt + 1]; 
    x4 := '='; 
    end else 
    begin 
    x1 := BaseTable[(Ord(Source[1 + i * 3]) shr 2)+1]; 
    xt := (Ord(Source[1 + i * 3]) shl 4) and 48; 
    x2 := BaseTable[xt + 1]; 
    x3 := '='; 
    x4 := '='; 
    end; 
    Result := Result + x1 + x2 + x3 + x4; 
    end; 
    end; 在SMTP.OnConnect事件中写身份验证. 
    procedure TSendFile.NMSMTPConnect(Sender: TObject); 
    begin {身份验证} 
    if FSMTP.ReplyNumber = 250 then 
    FSMTP.Transaction('auth login'); 
    if FSMTP.ReplyNumber = 334 then 
    begin 
    FSMTP.Transaction(EncodeBase64(FUserID)); 
    FSMTP.Transaction(EncodeBase64(FPassword)); 
    end; 
    end;