unit base64; interface uses Windows, SysUtils, Classes; function BinToStr(Binary: PByte; Len: Cardinal): String; procedure StrToStream(Str: String; Stream: TStream); implementation const CRYPT_STRING_BASE64 = 1; function CryptBinaryToString(pbBinary: PByte; cbBinary: DWORD; dwFlags: DWORD; pszString: PChar; var pcchString: DWORD): BOOL; stdcall; external 'Crypt32.dll' name 'CryptBinaryToStringA'; function CryptStringToBinary(pszString: PChar; cchString: DWORD; dwFlags: DWORD; pbBinary: PByte; var pcbBinary: DWORD; pdwSkip: PDWORD; pdwFlags: PDWORD): BOOL; stdcall; external 'Crypt32.dll' name 'CryptStringToBinaryA'; function BinToStr(Binary: PByte; Len: Cardinal): String; var Count: DWORD; begin Count:= 0; if CryptBinaryToString(Binary,Len,CRYPT_STRING_BASE64,nil,Count) then begin SetLength(Result,Count); if not CryptBinaryToString(Binary,Len,CRYPT_STRING_BASE64,PChar(Result), Count) then Result:= EmptyStr; end; end; procedure StrToStream(Str: String; Stream: TStream); var Buffer: PByte; Count: DWORD; begin Count:= 0; if CryptStringToBinary(PChar(Str),Length(Str),CRYPT_STRING_BASE64,nil,Count, nil,nil) then begin GetMem(Buffer,Count); try if CryptStringToBinary(PChar(Str),Length(Str),CRYPT_STRING_BASE64,Buffer, Count,nil,nil) then Stream.WriteBuffer(Buffer^,Count); finally FreeMem(Buffer); end; end; end; end.
Ahora para codificar un archivo en una cadena de texto:Para descifrar un texto y guardarlo en un archivo:Código Delphi [-]
var Stream: TMemoryStream; Texto: String; begin Stream:= TMemoryStream.Create; try Stream.LoadFromFile('imagen.jpg'); Texto:= BinToStr(Stream.Memory,Stream.Size); finally Stream.Free; end; end.Código Delphi [-]
var Stream: TFileStream; begin Stream:= TFileStream.Create('imagen.jpg',fmCreate); try StrToStream(Texto,Stream); finally Stream.Free; end; end.
Fuente datos: http://www.clubdelphi.com/foros/showthread.php?t=48924
Hola, estoy tratando de utilizar este cifrado y mi resultado es: 䅂䅁䩁乘扙癐ぅ㙰湱䩎䅥㥶乙㵳.
ResponderEliminarAlguna idea de que pueda ocurrir?