Simple Encrypt
#1
السلام عليكم و رحمة الله
طريقة بسيطة لتشفير اي ملف و حل تشفيره
الملفات المصدرية مرفقة

PHP كود :
(*
Simple Encrypt for Educational use
Coded By STRELiTZIA 03/22/2008
---
You can change code and use it WITHOUT REMOVE MY NAME :)
---

"OnClick Button Action"
procedure EncrOrDecr(_InPutFile_OutPutFilestringKey [Simple integer Key], Param [Encrypt] [Decrypt] [Other Nothing]: integer);
*)


unit MainFrm;

interface

uses
  Windows
MessagesSysUtilsVariantsClassesGraphicsControlsForms,
  
DialogsStdCtrlsGaugesExtCtrlsjpeg;

type
  TMain 
= class(TForm)
    
OpenDialogTOpenDialog;
    
SaveDialogTSaveDialog;
    
PnlTPanel;
    
ProgressGgeTGauge;
    
KeyEdtTEdit;
    
KeyLblTLabel;
    
OutPutFileEdtTEdit;
    
InPutFileEdtTEdit;
    
OpenBtnTButton;
    
InPutFileLblTLabel;
    
OutPutFileLblTLabel;
    
SeparatorLblTLabel;
    
CoderLblTLabel;
    
LogoImgTImage;
    
EncryptBtnTButton;
    
DecryptBtnTButton;
    
procedure OpenBtnClick(SenderTObject);
    
procedure KeyEdtKeyPress(SenderTObject; var KeyChar);
    
procedure EncryptBtnClick(SenderTObject);
    
procedure DecryptBtnClick(SenderTObject);
  private
    { Private 
declarations }
  public
    { Public 
declarations }
  
end;

var
  
MainTMain;

implementation
uses XpMan
; (* <<-- For Windows Xp Look :) *)
{
$R *.dfm}

(* 
______________________________________________________*)

procedure EncrOrDecr(_InPutFile_OutPutFilestringKey (* Simple integer Key *), Param (* [Encrypt] [Decrypt] [Other Nothing] *): integer);
var
  
InPutFileStreamOutPutFileStreamTFileStream;
  
_ReadBuffer_WriteBufferChar;
  
iinteger;
begin

  InPutFileStream 
:= TFileStream.Create(_InPutFileFmOpenRead); (* Create FileStream and Open our file in Read mode *)
  
OutPutFileStream := TFileStream.Create(_OutPutFileFmOpenWrite or FmCreate or FmSharedEnyWrite); (* Create new FileStream for our new file in write mode *)

  
Main.ProgressGge.MaxValue := InPutFileStream.Size; (* Initialization to InPutFile Size *)

  for 
:= 0 to InPutFileStream.Size do
  
begin
    InPutFileStream
.Read(_ReadBufferSizeOf(_ReadBuffer));

    case 
Param of
      1
begin _WriteBuffer := Char(Pchar(_ReadBuffer) + Key); (* if Param 1 Encrypt called *) end;
      
2begin _WriteBuffer := Char(Pchar(_ReadBuffer) - Key); (* if Param 2 Decrypt called *) end;
    
end;
    
Main.ProgressGge.Progress := Main.ProgressGge.Progress 1;
    
OutPutFileStream.Write(_WriteBufferSizeOf(_WriteBuffer));
  
end;
  
ShowMessage('Complete... :) [Simple Encrypt fo EDUCATIONAL USE]');
  
InPutFileStream.Free;
  
OutPutFileStream.Free;
  
Main.ProgressGge.Progress := 0; (* Reset *)

end;
(* 
______________________________________________________*)

procedure TMain.OpenBtnClick(SenderTObject);
begin
  
if Opendialog.Execute then
  begin
    InPutFileEdt
.Text := OpenDialog.FileName;
    
OutPutFileEdt.Text := OpenDialog.FileName '.Out';
  
end;
end;
(* 
______________________________________________________*)

procedure TMain.KeyEdtKeyPress(SenderTObject; var KeyChar);
begin
  
if not (Key in ['0'..'9'#8]) then Key := #0; (* Accept only number [#8 for Remove key] *)
end;
(* 
______________________________________________________*)

procedure TMain.EncryptBtnClick(SenderTObject);
begin
  
if (InPutFileEdt.Text <> '') and (OutPutFileEdt.Text <> '') and (KeyEdt.Text <> ''then
    EncrOrDecr
(InPutFileEdt.TextOutPutFileEdt.TextStrToInt(KeyEdt.Text), 1) else (* Param [ENCRYPT]*)
    
ShowMessage('ERROR : [Informations missing]');
end;
(* 
______________________________________________________*)

procedure TMain.DecryptBtnClick(SenderTObject);
begin
  
if (InPutFileEdt.Text <> '') and (OutPutFileEdt.Text <> '') and (KeyEdt.Text <> ''then
    EncrOrDecr
(InPutFileEdt.TextOutPutFileEdt.TextStrToInt(KeyEdt.Text), 2) else (* Param [DECRYPT]*)
    
ShowMessage('ERROR : [Informations missing]');
end;
end

بالتوفيق


الملفات المرفقة
.rar   SimpleEncrypt.rar (الحجم : 219.31 ك ب / التحميلات : 934)
[-] كل من 1 user says قال شكرا ل STRELiTZIA على المشاركة المفيدة
  • mohamed49
الرد
#2
و عليكم السلام و رحمة الله

مشروع ممتاز يحتاج خاصيتين ليصبح على أعلى مستوى.

لن أخبرك عنهما حتى تعدني بأن تبذل قصارى جهدك لتحقيقهما.
الرد
#3
إقتباس :مشروع ممتاز يحتاج خاصيتين ليصبح على أعلى مستوى.
لن أخبرك عنهما حتى تعدني بأن تبذل قصارى جهدك لتحقيقهما

على عيني اخي مهدي Big Grin
تحياتي
الرد
#4
الخاصية الأولى:
منع تشفير ملف مشفر - أي يتم تشفير الملف مرة واحد و لا يقبل إلا حل التشفير.


الخاصية الثانية:
على البرنامج أن يتأكد من صحة كلمة مرور الملف المشفر حتى يقوم بحل التشفير، أما إذا كانت كلمة المرور خاطئة يمنعك من حل التشفير بكلمة مرور خاطئة أو فارغة بشرط.


سرعة الإستجابة في التأكد من صحة كلمة المرور حتى مع الملفات الكبيرة الحجم 200 ميجا بايت فأكثر


[size=5]كان الله في عونك.[/size]
الرد
#5
السلام عليكم و رحمة الله
- تشفير الملف المشفر يزيد من تعقيد محاولة كسره و معضم برامج التشفير تترك للمستعمل حرية هذة الخاصية لاستفادة منها. على كل حال يكون لك ذلك ان شاء الله Smile

- في هذا المثال البسيط المرفق لا يتم حفظ الــ Key في الملف المشفر لانه يبدل ترتيب الــ Position لــ Characters بقيمة الــ Key يعني :
----
a تصبح b اذا كان الــ key يساوي 1 العمل فقط على الــ Character position
التشفير a + 1 = b
حل التشفير b - 1 = a
----
للفهم اكثر ننشئ ملف Text و نكتب فيه abcdefghijklmnopqrstuvwxyz ثم نقوم بتشفيره بــ key 1
و نقارن جيدا بين الملفين... POSITION CHARACTER

على كل حال يكون لك ذلك ان شاء الله Smile

- سارفق ايظا طريقة عمل Hash لــ Key و Encryptage محترف للملفات مع ملفات مصدرية كمثال جديد و هو :
Blowfish, RijnDael

تحياتي
الرد
#6
إقتباس :و معظم برامج التشفير تترك للمستعمل حرية هذة الخاصية لاستفادة منها

اجعل في البرنامج خانة اختيار Check Box للمستخدم.

إقتباس :لا يتم حفظ الــ Key في الملف المشفر

لعله في المستقبل نضيف لهذا المثال خاصية SFX التي تقوم بحفظ الملف الذي يحمل كلمة المرور في الملف نفسه.
الرد
#7
بارك الله فيك Smile
الرد


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


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