function Base64Encode(const S: AnsiString): AnsiString; const Base64Code: AnsiString = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; var i: Integer; InBuf: array[0..2] of Byte; OutBuf: array[0..3] of AnsiChar; begin Result := ''; i := 1; while i <= Length(S) do begin FillChar(InBuf, SizeOf(InBuf), 0); FillChar(OutBuf, SizeOf(OutBuf), '='); Move(S[i], InBuf, Min(3, Length(S) - i + 1)); OutBuf[0] := Base64Code[InBuf[0] shr 2 + 1]; OutBuf[1] := Base64Code[((InBuf[0] and $03) shl 4) or (InBuf[1] shr 4) + 1]; OutBuf[2] := Base64Code[((InBuf[1] and $0F) shl 2) or (InBuf[2] shr 6) + 1]; OutBuf[3] := Base64Code[InBuf[2] and $3F + 1]; Result := Result + OutBuf; Inc(i, 3); end; end;

function Base64Decode(const S: AnsiString): AnsiString; const Base64Code: array[0..127] of Integer = ( -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, 62, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, 63, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1, -1);

var i, j: Integer; InBuf: array[0..3] of Byte; OutBuf: array[0..2] of AnsiChar; begin Result := ''; i := 1; while i <= Length(S) do begin FillChar(InBuf, SizeOf(InBuf), 0); for j := 0 to 3 do begin if i <= Length(S) then begin while (i <= Length(S)) and (Base64Code[Ord(S[i])] = -1) do Inc(i); if i <= Length(S) then InBuf[j] := Base64Code[Ord(S[i])]; Inc(i); end; end; OutBuf[0] := AnsiChar((InBuf[0] shl 2) or (InBuf[1] shr 4)); OutBuf[1] := AnsiChar((InBuf[1] shl 4) or (InBuf[2] shr 2)); OutBuf[2] := AnsiChar((InBuf[2] shl 6) or InBuf[3]); if InBuf[2] <> 64 then Result := Result + OutBuf[0] + OutBuf[1] + OutBuf[2] else if InBuf[1] <> 64 then Result := Result + OutBuf[0] + OutBuf[1]; end; end;

用delphi写一个base64加密函数

原文地址: https://www.cveoy.top/t/topic/nCa 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录