الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشروع لتشفير الملفات

بدأه رجل الصعاب في 20 فبراير 2008 · 18 رد · 1,810 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم اخواني

لدي مشروع لتشفير الملفات لكني لم اعرف الطريقة لكي ابدأ ممكن احد يعلمني وساكون له شاكرا

والسلام عليكم

#2

تشفير ملفات !

اذكر تفاصيل اكثر عن المشروع

تم تعديل هذه المشاركة بواسطة B.M.AbdelAziZ في 20 فبراير 2008 في 19:42 — السبب: تصفير ملفات!

d4baa0.gif
#3

بسم الله الرحمن الرحيم

طلبك غير واضح أذكر المزيد من المعلومات

1141068814.gif

It doesn't matter how slow you go, as long as you don't stop

#4

انا اريد ان اقوم بعمل برنامج لتشفير الملفات الغير المضغوطة ولكنني لم اعرف فانا لازلت مبتدأ في البرمجة ولكن ان ان تم ارشادي سوف اقوم بالتطبيق

وان اردت نمودج للشكل فانا مستعد لأضافته والف شكر لكم

#5
رجل الصعاب كتب:
وان اردت نمودج للشكل فانا مستعد لأضافته
d4baa0.gif
#6

سوف اصمم الشكل وارسله لكم

#7

ابحث في النت عن شي اسمه Crypto API +Delphi

من ناحية دوال الAPI الخاصة بالتشفير اقرا في ه

security.rar

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#8

السلام عليكم اخي romanof

انا قلت لك مبتدأ في الديلفي ولا استطيع ان اعرف عن Crypto API +Delphi شيئا ولكن ان اعطيتني تعريفا لها سأكون شاكرا لك

اما صورة المشروع فهي في رد قادم ان شاء الله

#9

ابحث في النت عن شي اسمه Crypto API +Delphi

من ناحية دوال الAPI الخاصة بالتشفير اقرا في المرفقات طبعا الملف فيه امثلة بالسي

اظن انه سيفيدك جدا

http://irsoft.de/web/Delphi-MD5

وهذا مثال لتشفير الملفات بدلفي

 procedure TMainForm.BitBtn1Click(Sender: TObject);
var
  hProv: HCRYPTPROV;	
  KeyExchKey, SessionKey: HCRYPTKEY;
  flag, keyLen: DWORD;
  infile, outfile: file;
  tmp: PBYTE;
  buf: array[0..511] of byte;
  alg: ALG_ID;
  stream: boolean;
begin
  …
	подключение к криптопровайдеру
	…
	if ActionRadioGroup.ItemIndex = 0 {шифрование} then
  begin
	OpenDlg.Title := 'Укажите файл для шифрования';
	if OpenDlg.Execute then
	  AssignFile(infile, OpenDlg.FileName)
	else
	  exit;
	OpenDlg.Title := 'Укажите файл с открытым ключом обмена ключами получателя';
	if OpenDlg.Execute then
	begin
	  AssignFile(outfile, OpenDlg.FileName);
	  reset(outfile, 1);
	  keyLen := FileSize(outfile);
	  GetMem(tmp, keyLen);
	  BlockRead(outfile, tmp^, keyLen);
	  CloseFile(outfile);
	end
	else
	  exit;
	CryptImportKey(hProv, tmp, keyLen, 0, 0, @KeyExchKey);
	FreeMem(tmp, keyLen);
	SaveDlg.Title := 'Задайте имя файла для зашифрованных данных';
	if SaveDlg.Execute then
	  AssignFile(outfile, SaveDlg.FileName)
	else
	  exit;
	rewrite(outfile, 1);
	case AlgRadioGroup.ItemIndex of {установка алгоритма шифрования}
	  0:
		begin
		  alg := CALG_RC2; {алгоритм RC2}
		  stream := false; {блочный шифр}
		end;
	  1:
		begin
		  alg := CALG_RC4; {алгоритм RC4}
		  stream := true; {поточный шифр}
		end;
	end;
	CryptGenKey(hProv, alg, CRYPT_EXPORTABLE or CRYPT_CREATE_SALT, @SessionKey);
	  {создание сеансового ключа}
	keyLen := 128; {размер буфера "с запасом"}
	GetMem(tmp, keyLen);
	CryptExportKey(SessionKey, KeyExchKey, SIMPLEBLOB, 0, tmp, @keyLen);
	BlockWrite(outfile, keyLen, 4); {запись в файл размера ключа}
	BlockWrite(outfile, tmp^, keyLen); {и самого зашифрованного ключа}
	CryptDestroyKey(KeyExchKey);
	keyLen := 512; {размер буфера "с запасом"}
	CryptGetKeyParam(SessionKey, KP_SALT, @buf, @keyLen, 0);
	BlockWrite(outfile, keyLen, 4); {запись в файл размера солта}
	BlockWrite(outfile, buf, keyLen); {и самого солт-значения}
	if not stream then {если шифр - блочный}
	begin
	  //генерируем IV
	  keyLen := 512; {размер буфера "с запасом"}
	  // запрос IV ради выяснения его размера
	  CryptGetKeyParam(SessionKey, KP_IV, @buf, @keyLen, 0);
	  CryptGenRandom(hProv, keyLen, @buf); {генерация IV}
	  CryptSetKeyParam(SessionKey, KP_IV, @buf, 0);
	  BlockWrite(outfile, keyLen, 4); {запись в файл размера IV}
	  BlockWrite(outfile, buf, keyLen); {и самого IV}
	end;
	reset(infile, 1);
	while not eof(infile) do
	begin {собственно шифрование и запись в файл}
	  BlockRead(infile, buf, 496, keyLen);
	  CryptEncrypt(SessionKey, 0, eof(infile), 0, @buf, @keyLen, 512);
	  BlockWrite(outfile, buf, keyLen);
	end;
	CloseFile(infile);
	CloseFile(outfile);
	CryptDestroyKey(SessionKey);
  end
  else {расшифровывание}
  begin {получаем дескриптор своего ключа обмена ключами}
	CryptGetUserKey(hProv, AT_KEYEXCHANGE, @KeyExchKey);
	OpenDlg.Title := 'Укажите файл с зашифрованными данными';
	if OpenDlg.Execute then
	  AssignFile(infile, OpenDlg.FileName)
	else
	  exit;
	reset(infile, 1);
	BlockRead(infile, keyLen, 4); {читаем размер ключа}
	GetMem(tmp, keyLen);
	BlockRead(infile, tmp^, keyLen); {читаем сам ключ}
	CryptImportKey(hProv, tmp, keyLen, KeyExchKey, 0, @SessionKey);
	FreeMem(tmp, keyLen);
	CryptDestroyKey(KeyExchKey);
	BlockRead(infile, keyLen, 4); {читаем солт-значение}
	BlockRead(infile, buf, keyLen);
	CryptSetKeyParam(SessionKey, KP_SALT, @buf, 0);
	keyLen := 4; {выясняем алгоритм шифрования}
	CryptGetKeyParam(SessionKey, KP_ALGID, @alg, @keyLen, 0);
	case alg of
	  CALG_RC2: stream := false;
	  CALG_RC4: stream := true;
	end;
	if not stream then {если шифр - блочный}
	begin
	  //читаем и устанавливаем IV
	  BlockRead(infile, keyLen, 4);
	  BlockRead(infile, buf, keyLen);
	  CryptSetKeyParam(SessionKey, KP_IV, @buf, 0);
	end;
	SaveDlg.Title := 'Задайте имя файла для расшифрованных данных';
	if SaveDlg.Execute then
	begin
	  AssignFile(outfile, SaveDlg.FileName);
	  rewrite(outfile, 1);
	  while not eof(infile) do
	  begin {собственно расшифровывание}
		BlockRead(infile, buf, 512, keyLen);
		CryptDecrypt(SessionKey, 0, eof(infile), 0, @buf, @keyLen);
		BlockWrite(outfile, buf, keyLen);
	  end;
	  CloseFile(outfile);
	end;
	CloseFile(infile);
	CryptDestroyKey(SessionKey);
  end;
  CryptReleaseContext(hProv, 0);
end;

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#10

السلام عليكم هدا هو المشروع فهو صغير جدا

ولكن اريده ان يكون غير قابل للاختراق

post-149556-1203626622_thumb.jpg

#11

المثال السابق اخذته من احد المواقع الروسية

اما اذا كنت مبتدئ في الدلفي اقرا عن الدلفي ...انا ايضا مبتدئ ولا يغرك اللقب مشرف هذا مجرد عمل تنظيمي

ثانيا حكاية مبتديء في ال Crypto API

كلنا مبتدؤن ولا اعرف عنها غير القليل وها انذا اعطيتك اسماء الاشياء البدائية

اقرا عن دلفي وعن اساسياتها في المواضيع المثبته في موضوع الكتب

اما عن اساسيات التشفير بواسطة الAPI او Crypto API

فابحث في النت عن هذه الاشياء وستجد الكثير

ابحث عن اشياء مثل

CryptImportKey

CryptGenKey

CryptExportKey

بعد قليل سارفق لك كتيب يتحدث عنها ولكنه اكواده بالسي

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#12

شكرا لك اخي على المرور وان شاء الله سابحث

#13

هذا هو رابط الكتيب

http://rapidshare.com/files/93785651/security.rar.html

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#14

مثال اخر لتشفير ملف بدلفي فقط دزن استخدام الAPI

unit EZCrypt;

 {modeled by Ben Hochstrasser(bhoc@surfeu.ch) after some code snippet from borland}

 interface

 uses Windows, Classes;

 type
   TWordTriple = Array[0..2] of Word;

 function FileEncrypt(InFile, OutFile: String; Key: TWordTriple): boolean;
 function FileDecrypt(InFile, OutFile: String; Key: TWordTriple): boolean;
 function TextEncrypt(const s: string; Key: TWordTriple): string;
 function TextDecrypt(const s: string; Key: TWordTriple): string;
 function MemoryEncrypt(Src: Pointer; SrcSize: Cardinal; Target: Pointer; TargetSize: Cardinal; Key: TWordTriple): boolean;
 function MemoryDecrypt(Src: Pointer; SrcSize: Cardinal; Target: Pointer; TargetSize: Cardinal; Key: TWordTriple): boolean;

 implementation

 function MemoryEncrypt(Src: Pointer; SrcSize: Cardinal; Target: Pointer; TargetSize: Cardinal; Key: TWordTriple): boolean;
 var
   pIn, pOut: ^byte;
   i : Cardinal;
 begin
   if SrcSize = TargetSize then
   begin
	 pIn := Src;
	 pOut := Target;
	 for i := 1 to SrcSize do
	 begin
	   pOut^ := pIn^ xor (Key[2] shr 8);
	   Key[2] := Byte(pIn^ + Key[2]) * Key[0] + Key[1];
	   inc(pIn);
	   inc(pOut);
	 end;
	 Result := True;
   end else
	 Result := False;
 end;

 function MemoryDecrypt(Src: Pointer; SrcSize: Cardinal; Target: Pointer; TargetSize: Cardinal; Key: TWordTriple): boolean;
 var
   pIn, pOut: ^byte;
   i : Cardinal;
 begin
   if SrcSize = TargetSize then
   begin
	 pIn := Src;
	 pOut := Target;
	 for i := 1 to SrcSize do
	 begin
	   pOut^ := pIn^ xor (Key[2] shr 8);
	   Key[2] := byte(pOut^ + Key[2]) * Key[0] + Key[1];
	   inc(pIn);
	   inc(pOut);
	 end;
	 Result := True;
   end else
	 Result := False;
 end;

 function TextCrypt(const s: string; Key: TWordTriple; Encrypt: Boolean): string;
 var
   bOK: Boolean;
 begin
   SetLength(Result, Length(s));
   if Encrypt then
	 bOK := MemoryEncrypt(PChar(s), Length(s), PChar(Result), Length(Result), Key)
   else
	 bOK := MemoryDecrypt(PChar(s), Length(s), PChar(Result), Length(Result), Key);
   if not bOK then Result := '';
 end;

 function FileCrypt(InFile, OutFile: String; Key: TWordTriple; Encrypt: Boolean): boolean;
 var
   MIn, MOut: TMemoryStream;
 begin
   MIn := TMemoryStream.Create;
   MOut := TMemoryStream.Create;
   Try
	 MIn.LoadFromFile(InFile);
	 MOut.SetSize(MIn.Size);
	 if Encrypt then
	   Result := MemoryEncrypt(MIn.Memory, MIn.Size, MOut.Memory, MOut.Size, Key)
	 else
	   Result := MemoryDecrypt(MIn.Memory, MIn.Size, MOut.Memory, MOut.Size, Key);
	 MOut.SaveToFile(OutFile);
   finally
	 MOut.Free;
	 MIn.Free;
   end;
 end;

 function TextEncrypt(const s: string; Key: TWordTriple): string;
 begin
   Result := TextCrypt(s, Key, True);
 end;

 function TextDecrypt(const s: string; Key: TWordTriple): string;
 begin
   Result := TextCrypt(s, Key, False);
 end;

 function FileEncrypt(InFile, OutFile: String; Key: TWordTriple): boolean;
 begin
   Result := FileCrypt(InFile, OutFile, Key, True);
 end;

 function FileDecrypt(InFile, OutFile: String; Key: TWordTriple): boolean;
 begin
   Result := FileCrypt(InFile, OutFile, Key, False);
 end;

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#17

والله اخي عبد العزيز لم افهم اكثر ممكن تشرح بالصور

فانا لا تجيد الانجليزية جيدا ارجوك اشرح خطوة خطوة وبالصور

#18

لا حول ولاقوة الا بالله العلي العظيم

حسبي الله ونعم الوكيل

لا اله الا انت سبحانك اني كنت من الظالمين

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#19
رجل الصعاب كتب:
لم افهم اكثر ممكن تشرح بالصور

فانا لا تجيد الانجليزية جيدا ارجوك اشرح خطوة خطوة وبالصور

انها برمجة ولايمكن ترجمتها للعربية ولا شرحها بالصور
d4baa0.gif

مواضيع مشابهة