首页 > 其他分享 >delphi Base64转换(加密、解密)

delphi Base64转换(加密、解密)

时间:2023-09-23 10:35:11浏览次数:48  
标签:加密 delphi Base64 解密 Add Stream4 Stream2 Stream1

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单元的EncodeStringDecodeString实现

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中EncodeStringDecodeString函数需要转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单元的EncodeStreamDecodeStream实现

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

System.NetEncoding

对输入数据进行编码并返回编码后的数据。

重载

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

System.NetEncoding

对输入数据进行解码并返回解码后的数据。

重载

Decode(string) Decode(array of Byte)

将分别以字符串或字节数组的形式返回解码后的数据。

Decode(TStream, TStream)

将解码后的数据保存到 Output 中,并返回写入到 Output 中的字节数。

D7的EncodeString

unit

EncdDecd

对输入数据进行编码并返回编码后的数据。

D7的DecodeString

unit

EncdDecd

对输入数据进行解码并返回解码后的数据。

标签:加密,delphi,Base64,解密,Add,Stream4,Stream2,Stream1
From: https://www.cnblogs.com/txgh/p/17723957.html

相关文章

  • Delphi XE 时间和时间戳互转换
    usesSystem.DateUtils;functionTForm1.Gettamptime(vlen:Integer):string;varss:string;beginifvlen=13thenbeginss:=DateTimeToTimeStamp(now).time.ToString;Result:=IntToStr(DateTimeToUnix(Now,false))+Copy(ss,Length(ss)-......
  • ABAP-AES加密解密
    1REPORTytestdzp.23FORMb.45DATA:lv_encryptTYPEstring."加密前的string类型6DATA:lv_encrypt_xTYPExstring."加密前的xstring类型78DATA:lv_encrypt_afterTYPEstring."加密后的string类型9DATA:lv_encrypt_afte......
  • atob btoa 加解密
    atob(arg)对arg进行解密atob(str)对str进行加密1、兼容性:2、注意:我这次加密的时id字符串,其中只包含字母和数字;加密方法中的参数,只能包含:数字,大小写字母,应文标点符号,具体字符集是:latin1字符集;可自行百度查看其涵盖哪些字符;如果str中包含中文,中文字符等不能识别的,就会......
  • 携程ASE加密解密 java python
    java代码packagecom.example.trip_vip;importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.JSONObject;importjavax.crypto.Cipher;importjavax.crypto.spec.IvParameterSpec;importjavax.crypto.spec.SecretKeySpec;importjava.io.UnsupportedEncod......
  • 携程 3DES加密解密 java python
    javapackagecom.example;importorg.springblade.core.tool.utils.*;importjavax.annotation.Nullable;importjavax.crypto.Cipher;importjavax.crypto.SecretKeyFactory;importjavax.crypto.spec.DESKeySpec;importjava.util.Objects;publicclassDES3{......
  • File文件流与base64图片格式转换
    //base64转文件exportfunctionbase64ToFile(base64:any,fileName:string){if(!base64)returnletdata=base64.split(',');lettype=data[0].match(/:(.*?);/)[1];constbstr=window.atob(data[1]);letn=bstr.length;constu8arr=......
  • js解密日记3 jsentrypt带给我的困扰
    随着技术的不断进步,保护敏感数据已成为开发者的首要任务之一。加密是一种保护数据的方法,JSenCrypt是一款流行的加密库,提供了HTML、Python和Node.js版本。本文将探讨每个版本的特点、优点、缺点,并提供代码示例来演示它们的用法。jsentryptHTML版本优点:客户端加密:jsentrypt......
  • delphi JSON序列化(四)
    {TDateTimeConverter}functionTDateTimeConverter.CanConvert(ATypeInf:PTypeInfo):Boolean;beginResult:=True;end;functionTDateTimeConverter.ReadJson(constAReader:TJsonReader;ATypeInf:PTypeInfo;constAExistingValue:TValue;constASerial......
  • Oracle定义DES加密解密及MD5加密函数示例
    (1)DES加密函数createorreplacefunctionencrypt_des(p_textvarchar2,p_keyvarchar2)returnvarchar2isv_textvarchar2(4000);v_encvarchar2(4000);raw_inputRAW(128);key_inputRAW(128);decrypted_rawRAW(2048);beginv_text:=rpad(p_text,(trunc(len......
  • delphi 操作INI文件
    转载自: delphi读写INI文件_delphi写数据到ini_苏生米沿的博客-CSDN博客Delphi提供了读写INI文件的方法,Delphi操作INI文件最为简洁,这是因为Delphi提供了一个TInifile类,使我们可以非常灵活的处理INI文件。  一、INI文件的结构:;注释[小节名]关键字=值...INI文件允许有多个小节,......