求一份能在delphi2009中使用的AES加密单元(200)

  • 主题发起人 主题发起人 lah998
  • 开始时间 开始时间
L

lah998

Unregistered / Unconfirmed
GUEST, unregistred user!
求一份能在delphi2009中使用的AES加密单元工程做得差不多了,发现在D7中能用的AES单元在delphi2009中通不过.
 
注意 :delphi2007 String  ==> delphi2009 AnsiString delphi2007 char 一个字节 ==> 2009 二个字节
 
d7到d2009对应的 string=ansistringpchar=ansichar procedure EncryptAESStreamECB(Source: TStream; Count: cardinal; const ExpandedKey: TAESExpandedKey128; Dest: TStream); var TempIn, TempOut: TAESBuffer; Done: cardinal; ss:AnsiString; i,j:Integer; begin ss:=''; if Count = 0 then begin Source.Position := 0; Count := Source.Size; end else Count := Min(Count, Source.Size - Source.Position); if Count = 0 then exit; while Count >= SizeOf(TAESBuffer) do begin Done := Source.Read(TempIn, SizeOf(TempIn)); if Done < SizeOf(TempIn) then raise EStreamError.Create(SReadError); EncryptAES(TempIn, ExpandedKey, TempOut); for I := 0 to 15 do begin ss:=ss+ IntToHex( tempout,2); end; Done := dest.Write(tempout, SizeOf(tempout)); if Done < SizeOf(tempout) then raise EStreamError.Create(SWriteError); Dec(Count, SizeOf(TAESBuffer)); end; if Count > 0 then begin Done := Source.Read(TempIn, Count); if Done < Count then raise EStreamError.Create(SReadError); FillChar(TempIn[Count], SizeOf(TempIn) - Count, 0); EncryptAES(TempIn, ExpandedKey, TempOut); for j := 0 to 15 do begin ss:=ss+ IntToHex( tempout[j],2); end; Done := dest.Write(Tempout, SizeOf(tempout)); if Done < SizeOf(TempOut) then raise EStreamError.Create(SWriteError); end; Dest.Free; Dest:= TStringStream.Create(ss); end;
 
我参考了这个资料,没有改成功.
 
哪里没有成功,跟踪哦了吗?
 
谢谢,我自己已经弄好了,不需要改动人家的AES加密单元,也不需要改什么字符串,如果需要改字符串,就不需要用delphi2009了,这是违背D2009思想的.
 
我已经把代码上传到了csdn,需要的朋友可以下载
 
后退
顶部