delphi4arab منتديات دلفي للعرب

نسخة كاملة : سؤال عن كتابة برنامج تشفير نصوص
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم ورحمة الله تعالى وبركاته أما بعد
فأنا شخض في بداية مشواري التعليمي في برنامج الدلفي
وأنا **** صنع برنامج بحيث تكتب فيه نصا عادي وعندما تضغط الزر يحوله إلى نص مشفر
مثلا أكتب
الدلفي
فيعطيني الكتابة المشفرة كالتالي
hg$gtd
حيث
أ=h
ل=g
د=$
ل=g
ف=t
ي=d
فأنا **** دالة تقوم بهذا الامر
مع الشرح من فضلكم
و عليكم السلام و رحمة الله
حاول استعمال md5
حمل هذا السورس أخي
السلام عليكم
يمكنك استخدام بعض الاجراءات و التوابع المعرفة في الدلفي مثل الاستبدال قلب النص و غيرها

ملاحظة : الطريقة التي أشرت بها فوق غير فعالة و يمكن كسرها بسهولة عن طريق عد الاحرف الاكثر تكرار
و هكذا ..
وعليكم السلام ورحمة الله وبركاته
لتشفير أي شيء (نص، ملف، صورة، ...) هناك عدة طرق وعدة وسائل، لكل منها ما يميزه.
مبدئيا يمكن تشفير نص بالشكل التالي:
PHP كود :
function Encrypt(const s: String; CryptInt: Integer): String;
var
  
i: integer;
  
s2: string;
begin
  
if not (Length(s) = 0) then
    
for i := 1 to Length(s) do
      
s2 := s2 + Chr(Ord(s[i]) + CrypTint);
  
Result := s2;
end;

function 
Decrypt(const s: String; CryptInt: Integer): String;
var
  
i: integer;
  
s2: string;
begin
  
if not (Length(s) = 0) then
    
for i := 1 to Length(s) do
      
s2 := s2 + Chr(Ord(s[i]) - cryptint);
  
Result := s2;
end; 
راجع أيضا:
http://www.delphi4arab.net/forum/showthr...p?tid=1047
http://www.delphi4arab.net/forum/showthread.php?tid=848
بالتوفيق.
هنالك العديد من طرق تشفير الملفات النصية أو النصوص وسأشرح لك عنها جميعاً تقريباً.
1- بإستخدام تابعي ord وال chr الموجودين في دلفي على كل محرف .
2-بإستخدام مصفوفات معيارية يتم تغيير المحارف بناء عليها .
3- بإستخدام تقنية تشفير النص بناء على نص أخر مثل بعض الملفات الموجودة في windows
4- بإستخدام ثوابت الجهاز كالرقم التسلسلي الخاص بالهارد دسك .

كل هذه الطرق صحيحة وسأرضع الإجرائية التالية كمثال يوضح الأستخدام الأول لهذه التقنيات.
PHP كود :
procedure TForm1.CheckCharTybe(S: string;labnum:TLabel);
var
x,y,z,n,v,w:integer;
    
ch1:Char;
    
ch2:char;
    
ch3:char;
    
ch4:char;
    
ch5:char;
         
AF: set of char;
         
GL: set of CHAR;
         
MR: set of CHAR;
         
SX: set of CHAR;
         
YZ: set of CHAR;
         
N1: set of CHAR;
         
N2: set of CHAR;
begin
af
:=['A','B','C','D','E','F'];
GL:=['G','H','I','J','K','L'] ;
MR:=['M','N','O','P','Q','R'];
SX:=['S','T','U','V','W','X'];
YZ:=['Y','Z'];
N1:=['0','1','2','3','4'];
N2:=['5','6','7','8','9'];
if 
Length(s)=5 then
     begin
//==============================================================
//==============================================================
if s[1] in AF then
     begin
     ch1
:=chr(ord(s[1])+7);
     
end;
     if 
s[1] in GL then
     begin
     ch1
:=chr(ord(s[1])+9);
     
end;
     if 
s[1] in MR then begin
     ch1
:=chr(ord(s[1])+6);
     
end;
     if 
s[1] in SX then begin

     ch1
:=chr(ord(s[1])+2);
     
end;
     if 
s[1] in YZ then begin

      ch1
:=chr(ord(s[1])-9);
     
end;
     if 
s[1] in N1 then begin
     ch1
:=chr(ord(s[1])+3);
     
end;
     if 
s[1] in N2 then begin
      ch1
:=chr(ord(s[1])-3);
     
end;
//=============================================
//=============================================
if s[2] in AF then begin
      ch2
:=chr(ord(s[2])+5);
     
end;
     if 
s[2] in GL then begin
      ch2
:=chr(ord(s[2])+8);
     
end;
     if 
s[2] in MR then begin
     ch2
:=chr(ord(s[2])+4);
     
end;
     if 
s[2] in SX then begin
      ch2
:=chr(ord(s[2])+1);
     
end;
     if 
s[2] in YZ then begin
      ch2
:=chr(ord(s[2])-7);
     
end;
     if 
s[2] in N1 then begin
      ch2
:=chr(ord(s[2])+4);
     
end;
     if 
s[2] in N2 then begin
      ch2
:=chr(ord(s[2])-3);
     
end;
//ـــــــــــــــــــــــــــــــــــــــــــــــ
//ـــــــــــــــــــــــــــــــــــــــــــــــ
if s[3] in AF then begin
     ch3
:=chr(ord(s[3])+2);
     
end;
     if 
s[3] in GL then begin
     ch3
:=chr(ord(s[3])+5);
     
end;
     if 
s[3] in MR then begin
     ch3
:=chr(ord(s[3])+7);
     
end;
     if 
s[3] in SX then begin
      ch3
:=chr(ord(s[3])-4);
     
end;
     if 
s[3] in YZ then begin
     ch3
:=chr(ord(s[3])-8);
     
end;
     if 
s[3] in N1 then begin
     ch3
:=chr(ord(s[3])+3);
     
end;
     if 
s[3] in N2 then begin
      ch3
:=chr(ord(s[3])-3);
     
end;
//ـــــــــــــــــــــــــــــــــــــــــــــــ
//ـــــــــــــــــــــــــــــــــــــــــــــــ
if s[4] in AF then begin
     ch4
:=chr(ord(s[4])+3);
     
end;
     if 
s[4] in GL then begin
      ch4
:=chr(ord(s[4])-3);
     
end;
     if 
s[4] in MR then begin
      ch4
:=chr(ord(s[4])-2);
     
end;
     if 
s[4] in SX then begin
      ch4
:=chr(ord(s[4])-5);
     
end;
     if 
s[4] in YZ then begin
     ch4
:=chr(ord(s[4])-4);
     
end;
     if 
s[4] in N1 then begin
      ch4
:=chr(ord(s[4])+5);
     
end;
     if 
s[4] in N2 then begin
      ch4
:=chr(ord(s[4])-4);
     
end;
//ـــــــــــــــــــــــــــــــــــــــــــــــ
//ـــــــــــــــــــــــــــــــــــــــــــــــ
if s[5] in AF then begin
     ch5
:=chr(ord(s[5])+4);
     
end;
     if 
s[5] in GL then begin
      ch5
:=chr(ord(s[5])+6);
     
end;
     if 
s[5] in MR then begin
     ch5
:=chr(ord(s[5])+4);
     
end;
     if 
s[5] in SX then begin
      ch5
:=chr(ord(s[5])-4);
     
end;
     if 
s[5] in YZ then begin
     ch5
:=chr(ord(s[5])-4);
     
end;
     if 
s[5] in N1 then begin
     ch5
:=chr(ord(s[5])+4);
     
end;
     if 
s[5] in N2 then begin
      ch5
:=chr(ord(s[5])-4);
     
end;
//ـــــــــــــــــــــــــــــــــــــــــــــــ
//ـــــــــــــــــــــــــــــــــــــــــــــــ
LABNUM.Caption:=ch1+CH2+CH3+CH4+CH5;
//ـــــــــــــــــــــــــــــــــــــــــــــــ
//ـــــــــــــــــــــــــــــــــــــــــــــــ
     
end;


if 
Length(s)=3 then
               begin
if s[1] in AF then begin
      ch1
:=chr(ord(s[1])+9);
     
end;
     if 
s[1] in GL then begin
      ch1
:=chr(ord(s[1])+4);
     
end;
     if 
s[1] in MR then begin
      ch1
:=chr(ord(s[1])+6);
     
end;
     if 
s[1] in SX then begin
      ch1
:=chr(ord(s[1])-4);
     
end;
     if 
s[1] in YZ then begin
     ch1
:=chr(ord(s[1])-3);
     
end;
     if 
s[1] in N1 then begin
      ch1
:=chr(ord(s[1])+3);
     
end;
     if 
s[1] in N2 then begin
      ch1
:=chr(ord(s[1])+3);
     
end;
//ـــــــــــــــــــــــــــــــــــــــــــــــ
//ـــــــــــــــــــــــــــــــــــــــــــــــ
if s[2] in AF then begin
      ch2
:=chr(ord(s[2])+1);
     
end;
     if 
s[2] in GL then begin
      ch2
:=chr(ord(s[2])-1);
     
end;
     if 
s[2] in MR then begin
      ch2
:=chr(ord(s[2])-2);
     
end;
     if 
s[2] in SX then begin
      ch2
:=chr(ord(s[2])-2);
     
end;
     if 
s[2] in YZ then begin
      ch2
:=chr(ord(s[2])-7);
     
end;
     if 
s[2] in N1 then begin
       ch2
:=chr(ord(s[2])+5);
     
end;
     if 
s[2] in N2 then begin
       ch2
:=chr(ord(s[2])-5);
     
end;
//ـــــــــــــــــــــــــــــــــــــــــــــــ
//ـــــــــــــــــــــــــــــــــــــــــــــــ
if s[3] in AF then begin
     ch3
:=chr(ord(s[3])+7);
     
end;
     if 
s[3] in GL then begin
      ch3
:=chr(ord(s[3])+7);
     
end;
     if 
s[3] in MR then begin
      ch3
:=chr(ord(s[3])-7);
     
end;
     if 
s[3] in SX then begin
      ch3
:=chr(ord(s[3])-5);
     
end;
     if 
s[3] in YZ then begin
      ch3
:=chr(ord(s[3])-9);
     
end;
     if 
s[3] in N1 then begin
      ch3
:=chr(ord(s[3])+5);
     
end;
     if 
s[3] in N2 then begin
      ch3
:=chr(ord(s[3])-5);
     
end;
//ـــــــــــــــــــــــــــــــــــــــــــــــ
//ـــــــــــــــــــــــــــــــــــــــــــــــ
LABNUM.Caption:=ch1+ch2+ch3;
//ـــــــــــــــــــــــــــــــــــــــــــــــ
//ـــــــــــــــــــــــــــــــــــــــــــــــ
end;                      {End of the checking the chars} 
إقتباس :-بإستخدام مصفوفات معيارية يتم تغيير المحارف بناء عليها

لم افهم هذه,,
هل لك ان توضح قليلا بارك الله لك,, ؟
عزيزي المصفوفات المعيارية سأضع إستخدامها في موضوع أخر ... وهي تندرج تحت أسم المستوى الثاني من التشفير وسأضع إن شاء الله كافة الأنواع التي ذكرتها من التشفير في مواضيع لاحقة ... عل الله يجعلها في ميزان حسناتي ... جزاكم الله كل خير وأفاد الله بعلمكم الجميع..

كما سأضع إن شاء الله طرق حماية البرامج بإستخدام مسجل النظام وطريقة حماية البرامج بإستخدام فترة صلاحية للبرنامج ... وكل هذه المواضيع السابقة تندرج تحت عنوان حماية البرامج ... كل شئ خطوة بخطوة ..
السلام عليكم
أخي issamdnn كل الذي ذكرته يندرج تحت فكرة عامة : تبديل الرمز الأصلي برمز مغاير
حسب معادلة أو مصفوفة أو ثابت يعني 'ليس كل الطرق' كما ذكرت .

بالتوفيق ,,
بارك الله فيك أخي issamdnn وجزاك كل خير.
واضح أنك تبذل نشاط مميز هذه الأيام، بالتوفيق في انتظار المزيد...
إقتباس :أخي issamdnn كل الذي ذكرته يندرج تحت فكرة عامة : تبديل الرمز الأصلي برمز مغاير
حسب معادلة أو مصفوفة أو ثابت يعني 'ليس كل الطرق' كما ذكرت .
لا ضير أن نسميها ثلاث طرق تندرج تحت فكرة عامة Smile
الصفحات : 1 2