Base64转换(加密、解密)
代码
字符串加密、解密
uses System.NetEncoding;
procedure TForm1.Button1Click(Sender: TObject);
var
str1, str2: string;
begin
//加密
str1 := TNetEncoding.Base64.Encode('测试数据');
Memo1.Lines.Add('加密数据 ' + str1);
//解密
str2 := TNetEncoding.Base64.Decode(str1);
Memo1.Lines.Add('解密数据 ' + str2);
end;
D7中没有TBase64Encoding
,通过EncdDecd
单元的EncodeString
和DecodeString
实现
uses EncdDecd;
procedure TForm1.Button1Click(Sender: TObject);
var
str1, str2: string;
begin
//加密
str1 := EncodeString('测试数据');
Memo1.Lines.Add('加密数据 ' + str1);
//解密
str2 := DecodeString(str1);
Memo1.Lines.Add('解密数据 ' + str2);
end;
D7中EncodeString
和DecodeString
函数需要转utf8编码,加密的数据与TBase64Encoding
的一致
uses EncdDecd;
procedure TForm1.Button3Click(Sender: TObject);
var
str1, str2: string;
begin
//加密
str1 := EncodeString(AnsiToUtf8('测试数据'));
Memo1.Lines.Add('加密数据 ' + str1);
//解密
str2 := DecodeString(str1);
Memo1.Lines.Add('解密数据 ' + Utf8ToAnsi(str2));
end;
文件加密、解密
uses System.NetEncoding;
procedure TForm1.Button2Click(Sender: TObject);
var
Stream1, Stream3: TMemoryStream;
Stream2, Stream4: TStringStream;
begin
Stream1 := TMemoryStream.Create;
Stream2 := TStringStream.Create;
Stream3 := TMemoryStream.Create;
Stream4 := TStringStream.Create;
try
//加密
Stream1.LoadFromFile('C:\Users\Administrator\Desktop\ceshi.txt');
TNetEncoding.Base64.Encode(Stream1, Stream2);
Memo1.Lines.Add('加密数据 ');
Memo1.Lines.Add(Stream2.DataString);
//解密
Stream4.WriteString(Stream2.DataString);
Stream4.Position := 0;
TNetEncoding.Base64.Decode(Stream4, Stream3);
//解密后存为文件
Stream3.SaveToFile('C:\Users\Administrator\Desktop\ceshi2.txt');
finally
Stream1.Free;
Stream2.Free;
Stream3.Free;
Stream4.Free;
end;
end;
D7中没有TBase64Encoding
,通过EncdDecd
单元的EncodeStream
和DecodeStream
实现
uses EncdDecd;
procedure TForm1.Button2Click(Sender: TObject);
var
Stream1, Stream3: TMemoryStream;
Stream2, Stream4: TStringStream;
begin
Stream1 := TMemoryStream.Create;
Stream2 := TStringStream.Create('');
Stream3 := TMemoryStream.Create;
Stream4 := TStringStream.Create('');
try
//加密
Stream1.LoadFromFile('C:\Users\Administrator\Desktop\ceshi.txt');
EncodeStream(Stream1, Stream2);
Memo1.Lines.Add('加密数据 ');
Memo1.Lines.Add(Stream2.DataString);
//解密
Stream4.WriteString(Stream2.DataString);
Stream4.Position := 0;
DecodeStream(Stream4, Stream3);
//解密后存为文件
Stream3.SaveToFile('C:\Users\Administrator\Desktop\ceshi2.txt');
finally
Stream1.Free;
Stream2.Free;
Stream3.Free;
Stream4.Free;
end;
end;
文件加密结果不含换行符
uses System.NetEncoding;
procedure TForm1.Button3Click(Sender: TObject);
var
Stream1: TMemoryStream;
Stream2: TStringStream;
Base64: TBase64Encoding;
begin
Stream1 := TMemoryStream.Create;
Stream2 := TStringStream.Create;
//设置不添加回车换行符
Base64 := TBase64Encoding.Create(0);
try
//加密
Stream1.LoadFromFile('C:\Users\Administrator\Desktop\ceshi.txt');
Base64.Encode(Stream1, Stream2);
Memo1.Lines.Add('加密数据(添加回车换行符)');
Memo1.Lines.Add(Stream2.DataString);
finally
Stream1.Free;
Stream2.Free;
Base64.Free;
end;
end;
方法
System.NetEncoding.TNetEncoding.Encode
function Encode(const Input, Output: TStream): Integer; overload;
function Encode(const Input: array of Byte): TBytes; overload;
function Encode(const Input: string): string; overload;
unit
对输入数据进行编码并返回编码后的数据。
重载
Decode(string)
Decode(array of Byte)
将分别以字符串或字节数组的形式返回编码后的数据。
Decode(TStream, TStream)
将编码后的数据保存到 Output 中,并返回写入到 Output 中的字节数。
System.NetEncoding.TNetEncoding.Decode
function Decode(const Input, Output: TStream): Integer; overload;
function Decode(const Input: array of Byte): TBytes; overload;
function Decode(const Input: string): string; overload;
unit
对输入数据进行解码并返回解码后的数据。
重载
Decode(string)
Decode(array of Byte)
将分别以字符串或字节数组的形式返回解码后的数据。
Decode(TStream, TStream)
将解码后的数据保存到 Output 中,并返回写入到 Output 中的字节数。
D7的EncodeString
unit
对输入数据进行编码并返回编码后的数据。
D7的DecodeString
unit
对输入数据进行解码并返回解码后的数据。
标签:加密,delphi,Base64,解密,Add,Stream4,Stream2,Stream1 From: https://www.cnblogs.com/txgh/p/17723957.html