الاستدعاء الصحيح لخوارزمية
#1
السلام عليكم

كيفية أستدعاء تلك الوحدة أستدعاء صحيح لاستخدامها في التشفير ،،،

كود :
{*******************************************************} { } { RC4 encryption unit } { October 2006, Codius } { Thanks to Michael Puff, shapeless } { } {*******************************************************} unit unRC4; interface type PByteArray = ^TByteArray; TByteArray = Array [0..32767] Of Byte; TRC4 = class private D : array[Byte] of Byte; I,J : Byte; procedure Init(const Key: string); procedure Done; procedure Code(Source, Dest: pChar; Count: Integer); public function Encrypt(S: pChar; const Password: string): AnsiString; function Decrypt(S: pChar; const Password: string): AnsiString; end; implementation { TRC4.Encrypt This function will return the text(S) encrypted with the chosen password. } function TRC4.Encrypt(S: pChar; const Password: string): AnsiString; begin SetLength(Result, Length(S)); Init(Password); Code(pChar(S), pChar(Result), Length(S)); Done; end; { TRC4.Decrypt This function will return the text(S) decrypted with the chosen password. } function TRC4.Decrypt(S: pChar; const Password: string): AnsiString; begin SetLength(Result, Length(S)); Init(Password); Code(pChar(S), pChar(Result), Length(S)); Done; end; { TRC4.Init This routine will prepare the encryption/decryption. } procedure TRC4.Init(const Key: string); var R, S, T, K : Byte; U,L : Integer; DummyArray : array [0..1599] of Char; begin {$R-} {$Q-} L := Length(Key); I := 0; J := 0; R := 0; U := 0; for S := 0 to 255 do D[S] := S; for S := 0 to 255 do begin if (U < L) then K := PByteArray(Key)[u] else K := 0; Inc(U); if (U >= L) then U := 0; Inc(R, D[S] + K); T := D[S]; D[S] := D[R]; D[R] := T; end; Code(@DummyArray, @DummyArray, 1600); end; { TRC4.Done This routine will clean the variables used when encrypting/decrypting. } procedure TRC4.Done; begin FillChar(D, sizeOf(D), 0); FillChar(I, sizeOf(I), 0); FillChar(J, sizeOf(J), 0); end; { TRC4.Code This routine will encrypt the text. } procedure TRC4.Code(Source, Dest: pChar; Count: Integer); var S : Integer; T : Byte; begin for S := 0 to (Count - 1) do begin Inc(I); T := D[i]; Inc(J, T); D[i] := D[J]; D[J] := T; Inc(T, D[i]); Byte(Dest[S]) := Byte(Source[S]) xor D[T]; end; end; end.


وشكــرا
الرد
#2
و عليكم السلام
يمكنك ذلك فقط بانشاء نسخة من class RC4
على كل حال ستجد مثال في المرفقات Big Grin


الملفات المرفقة
.rar   RC4_Sample.rar (الحجم : 1.66 ك ب / التحميلات : 32)
الرد
#3
الله يبارك فيك

لا اعرف كيف التعديل على الاستدعاء أطلاقــا
مثلا لدي Memo و Button أكتب في الميمو الاول أي نص ، ثم أضغط علي الزر لتظهر لي القيم المشفرة في الميمو الثاني
ولماذا الاستعداء لا يكون الابتلك الطريقة ؟
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم