博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
delphi实现动态加密解密功能。
阅读量:6152 次
发布时间:2019-06-21

本文共 3312 字,大约阅读时间需要 11 分钟。

hot3.png

function Byte2Hex2(arrByte:TByteArr):string;var  i:integer;begin  for i:=0 to length(arrByte)-1 do  begin    Result := Result + Copy( IntToHex(arrByte[i],16),15,2)  end;end;function StrToByte(const Value: String): TByteArr; var I: integer;  begin   SetLength(Result, Length(Value));    for I := 0 to Length(Value) - 1 do    Result[I] := ord(Value[I + 1]);  end;function ByteToString(const Value: TByteArr): String; var I: integer; S : String; Letra: char; begin      S := '';      for I := Length(Value)-1 Downto 0 do      begin       letra := Chr(Value[I] );         S := letra + S;     end;    Result := S; end; function DynamicDec(resource:TByteArr;key:string): TByteArr; var arrbyte,Rndbyte,RndbyteKey,pBytes,pBytes1,cbtemp: TByteArr; lenKey,Lenresource,posInt,I,m,n:integer; begin  Lenresource:=length(resource); if Lenresource>8 then begin   if key='' then      key:='QWERTYUIOPLKJHGFFDSAZXCVBNM~!@#$%^&*()_+-=';    arrbyte:=strToByte(key);    lenKey:=length(arrbyte);    if lenKey>0 then    begin      //posInt:=0;      SetLength(pBytes,4);      SetLength(pBytes1,4);      for i := 0 to 7 do      begin      if i<4 then       begin          pBytes[i]:=resource[i];       end       else       begin          pBytes1[i-4]:=resource[i];       end;       end;      posInt:=PInteger(pBytes)^ xor PInteger(pBytes1)^;      posInt:=not (posInt) ;      SetLength(Rndbyte,4);      SetLength(RndbyteKey,4);     for I := 4 to 7 do     begin      Rndbyte[i-4]:=resource[i];      RndbyteKey[i-4]:= resource[i] xor posInt;     end;     m:=0;     for I := 0 to lenKey-1 do     begin      m:=m+1;      if m>4 then         m:=1  ;      arrbyte[i]:=arrbyte[i] xor Rndbyte[m-1];      end;      SetLength(cbtemp,Lenresource-8);      for I := 8 to Lenresource-1 do      begin      m:=m+1;      if m>4 then         m:=1  ;      resource[i]:=resource[i] xor RndbyteKey[m-1]   ;      for n := 0 to lenKey-1 do       begin        resource[i]:=resource[i] xor arrbyte[n]   ;       end;       cbtemp[i-8]:=resource[i];     end;    end; end; result:=cbtemp;end; function  DynamicEnc(resource:TByteArr;key:string): TByteArr; var arrbyte,Rndbyte,temp: TByteArr; lenKey,Lenresource,I,m,n,ValueRand:integer; FBytes : TByteArr; begin Randomize; if key='' then      key:='QWERTYUIOPLKJHGFFDSAZXCVBNM~!@#$%^&*()_+-='; SetLength(Rndbyte,4); SetLength(temp,4); arrbyte:=strToByte(key); lenKey:=length(arrbyte); Lenresource:=length(resource); ValueRand:=random(255); for i:= 0 to 3 do   begin   Rndbyte[i]:=random(255) ;   temp[i]:=Rndbyte[i]  ;   end; if (lenKey>0) and (lenresource>0) then  begin    for I := 0 to 3 do         Rndbyte[i]:=Rndbyte[i] xor ValueRand  ;    m:=0;    for I := 0 to lenKey-1 do    begin      m:=m+1;      if m>4 then         m:=1;       arrbyte[i]:=arrbyte[i] xor Rndbyte[m-1];    end;    for I := 0 to Lenresource-1 do    begin       m:=m+1;      if m>4 then         m:=1;       for n := 0 to lenKey-1 do       begin        resource[i]:= (resource[i]) xor arrbyte[n];       end;       resource[i]:=  resource[i] xor temp[m-1];    end;      ValueRand:= not ValueRand ;      ValueRand:= ValueRand xor PInteger(Rndbyte)^;      SetLength(FBytes,4);      Move(ValueRand, FBytes[0], SizeOf(FBytes));      resource:=FBytes+Rndbyte+resource;   end;   result:=resource; end;

 

转载于:https://my.oschina.net/u/248241/blog/1579636

你可能感兴趣的文章
ExtJS之开篇:我来了
查看>>
☆1018
查看>>
oracle 去掉空格
查看>>
6.13心得
查看>>
Runtime类
查看>>
eclipse decompiler
查看>>
记一个搜索网盘资源的网站
查看>>
jdk1.7和jdk1.8的String的getByte方法的差异
查看>>
java父子进程通信
查看>>
Android ADB server didn't ACK * failed to start daemon * 简单有效的解决方案
查看>>
Olap学习笔记
查看>>
Codeforces Round #431 (Div. 1)
查看>>
如何进行数组去重
查看>>
将标题空格替换为 '_' , 并自动复制到剪切板上
查看>>
List Collections sort
查看>>
Mysql -- You can't specify target table 'address' for update in FROM clause
查看>>
使用局部标准差实现图像的局部对比度增强算法。
查看>>
2017-2018-1 20165313 《信息安全系统设计基础》第八周学习总结
查看>>
《代码敲不队》第四次作业:项目需求调研与分析
查看>>
菜鸡互啄队—— 团队合作
查看>>