delphi实现DES字节流加密,该怎么解决

delphi实现DES字节流加密,该怎么解决,第1张

在 CnPack 提供的源代码包里,提供了 des 加解密单元文件,提供了以下四个功能函数: function DESEncryptStr(Str, Key: AnsiString): AnsiString; { 传入明文与加密 Key,DES 加密返回密文

你的那段加密解密函数应该是用的这个吧?

//加密函数 String:需要加密的字符串Key密钥

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('%12x',[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('%12x',[SrcAsc]);

offset:=SrcAsc;

end;

Result:=Dest;

end;

//解密函数 String:需要解密的字符串Key密钥

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;

最主要的算法就是下面这句:

sResult[i] := char(byte(sstr[i]) xor (spws shr 8));

1、将sstr[i]这个元素强制转换为byte类型,得到A;

2、将spws向右移8位,首部补8个零,相当于spws:=spws div 8得到B;

3、将A、B进行”异或“ *** 作,得到C;

4、将C赋值给sResult[i]

xor表示”异或“,shr表示”右移位“。

以上就是关于delphi实现DES字节流加密,该怎么解决全部的内容,包括:delphi实现DES字节流加密,该怎么解决、帮我分析一下这段DELPHI 就怎么算法加密的!、DELPHI的最基础的文本加密.求调教..等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10007743.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存