delphi 加密解密函数

本文介绍了一种简单的字符串加密和解密算法实现。通过使用偏移量和密钥进行字符转换,实现对输入字符串的加密,并能逆过程解密回原始数据。该算法适用于基本的数据保护需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字符串加密解密函数,可以直接使用  
   
  //加密函数  
  Function   EncrypKey   (Src:String;   Key:String):string;  
  var  
  idx   :integer;  
  KeyLen   :Integer;  
  KeyPos   :Integer;  
  offset   :Integer;  
  dest   :string;  
  SrcPos   :Integer;  
  SrcAsc   :Integer;  
  TmpSrcAsc   :Integer;  
  Range   :Integer;  
   
  begin  
  KeyLen:=Length(Key);  
  if   KeyLen   =   0   then   key:='Think   Space';  
  KeyPos:=0;  
  SrcPos:=0;  
  SrcAsc:=0;  
  Range:=256;  
   
  Randomize;  
  offset:=Random(Range);  
  dest:=format('%1.2x',[offset]);  
  for   SrcPos   :=   1   to   Length(Src)   do  
  begin  
  SrcAsc:=(Ord(Src[SrcPos])   +   offset)   MOD   255;  
  if   KeyPos   <   KeyLen   then   KeyPos:=   KeyPos   +   1   else   KeyPos:=1;  
  SrcAsc:=   SrcAsc   xor   Ord(Key[KeyPos]);  
  dest:=dest   +   format('%1.2x',[SrcAsc]);  
  offset:=SrcAsc;  
  end;  
  Result:=Dest;  
  end;  
   
  //解密函数  
  Function   UncrypKey   (Src:String;   Key:String):string;  
  var  
  idx   :integer;  
  KeyLen   :Integer;  
  KeyPos   :Integer;  
  offset   :Integer;  
  dest   :string;  
  SrcPos   :Integer;  
  SrcAsc   :Integer;  
  TmpSrcAsc   :Integer;  
  Range   :Integer;  
   
  begin  
  KeyLen:=Length(Key);  
  if   KeyLen   =   0   then   key:='Think   Space';  
  KeyPos:=0;  
  SrcPos:=0;  
  SrcAsc:=0;  
  Range:=256;  
  offset:=StrToInt('$'+   copy(src,1,2));  
  SrcPos:=3;  
  repeat  
  SrcAsc:=StrToInt('$'+   copy(src,SrcPos,2));  
  if   KeyPos   <   KeyLen   Then   KeyPos   :=   KeyPos   +   1   else   KeyPos   :=   1;  
  TmpSrcAsc   :=   SrcAsc   xor   Ord(Key[KeyPos]);  
  if   TmpSrcAsc   <=   offset   then  
  TmpSrcAsc   :=   255   +   TmpSrcAsc   -   offset  
  else  
  TmpSrcAsc   :=   TmpSrcAsc   -   offset;  
  dest   :=   dest   +   chr(TmpSrcAsc);  
  offset:=srcAsc;  
  SrcPos:=SrcPos   +   2;  
  until   SrcPos   >=   Length(Src);  
  Result:=Dest;  
  end; 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值