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

caesar cipher

بدأه looletta في 14 مارس 2008 · 23 رد · 2,744 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

ممكن مساعدة في اكواد التشفير بال

caesar cipher

اريد عمل برنامج ياخذ الرسالة المشفرة من ملف

ويقوم بعرض جميع الاحتمالات لهذه الرساله من 0 إلى 25

يعني لوكانت الرساله مشفرة بال

key=4

حيعرض رقم الكي واللي يقابله بعد فك الشفره

من 0 إلى 25

رجاااء المساعدة....لو الفكرة على الأقل؟

#2

أكتبي محاولتك اولا.

وستجد المساعدة باذن الله.

tvquran_6.gif

#3

مشككور اخوي ومحاولتي

 

#include<iostream.h>
#include<fstream.h>

///////////////////////Size Function////////////////////////

int size()
{
 int count=0;
 char ch;
 ifstream read("t.txt");
 read>>ch;
 while(!read.eof())
 {
  count++;

  read>>ch;
 }
	read.close();

 return count;
}







void main()
{

 char ch;
	int n=0;
 int k=0;
	char p;
   cout<<"the cipher text is:\n"; 

ifstream read("ciphertext.txt");
ofstream write("plaintext.txt");
read>>ch;


while(!read.eof())
{
 cout<<ch;
 read>>ch;

}//while
cout<<"\n";


 for(int i=0;i<size();i++)
 {

while(k<26)
 {
  read>>ch;
 read.seekg(i,ios::beg);
	 p=(ch+k)%26;
  k++;
  write<<"\n"<<k<<"	 ";
  write<<p<<"\n";

 }
 }//for

read.close();
}
#4

كتبت الكود...... ومافي رد

انا في الإنتظار..

#5

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

يعني بعد ما يقرأمن الملف الرسالةالمشفرة

يكتب جميع الإحتمالات الممكنة لها من0 إلى 25

في ملف جديد

بهذه الطريقة

Key plaintext

0 cat

1 dbu

2

25

وهكذا ....

ومشكووور

#6

هل من الممكن ان يكون المفتاح في الملف

ام من المفترض يكون غير معروف

الملف يفترض ان يكون سطر واحد او اكثر.

tvquran_6.gif

#7

هذا الكود:

#include <iostream>

#include <fstream>

#include <string>

using namespace std;

int main () {

string line;

string h;

ifstream sourcefile ("ciphertext.txt");

ofstream storefile ("plaintext.txt");

if (sourcefile.is_open() )

{

while (! sourcefile.eof() )

{

getline (sourcefile,line );

h.resize(line.length() ); 

for(int k=0 ;k<=25;k++)

{

for(int i=0;i<line.length() ;i++)

{



h=char((int(line)+k)%26);



}

storefile<<k<<": "<<h.c_str()<<endl;

}

}

sourcefile.close();

storefile.close () ;

}

else cout << "Unable to open file"; 

return 0;

}
tvquran_6.gif

#8

جزاك الله خير..... وجعله في موازين حسناتك

بس ما ادري لي يفتح عندي في المفكرة في ال plaintext مربعات غريبة بدل النص

#9

استخدمت الكود الي كتبتية

(p+k) %26);
tvquran_6.gif

#10

طبعا تعتمد على كود التشفير الاصلي

هل الشفرة المكتوبه في المحاوله هي عكس الشفرة

tvquran_6.gif

#11

معليش .... بس مافهمت سؤالك

#12

المفروض اني اعرف كود الملف المصدر باي طريقة شفر بالضبط.

هل تعرف كيف شفر الملف الاصل؟؟؟

tvquran_6.gif

#13

الملف المشفر حيكون مشفر بطريقة caescar cipher

والبرنامج يجرب كل key ويطلع الناتج ..... يعني البرنامج يسوي تحليل لجميع الاحتمالات الممكنة للkey

ارجو اني اكون وضحت

#14

فقط عدل السطر

h=char((int(line)+k)%26);

الى

h=char((int(line)+k));

تم تعديل هذه المشاركة بواسطة فهدالشلوي في 15 مارس 2008 في 01:57

tvquran_6.gif

#15

هل عمل البرنامج المطلوب

tvquran_6.gif

#16

البرنامج بعد التعديل ....... اصبح يطلع رموز بدل المربعات .... يعني هو تقريبا صح ...

بس المشكلة في ان الناتج يجب الموجود في الplaintext لابد انه يكون كلمات بدل الرموز يعني لو كان عندي حرف b والkey =3 راح يكون الناتج e .

#17

يجب معرفة طريقة التشفير الاصلية وعكسها.

مثلا:

اذا كنا في التشفير اضفنا 5 الى قيمة الحرف

في العكس نطرح 5 من قيمة الحرف يعود الى قيمته الاصلية.

فقط غيري هنا بالطريقة التي تعكس التشفير.

h=char((int(line)+k)%26);
tvquran_6.gif

#18

اسفة جدا على الإزعاج....... بس رجع يطلع مربعات ..... انا ماني فاهمه البرنامج لي يطلع رموز بدل الأرقام ..... هل لها علاقة بال ASCII للحرف الي ادخله

#19

لنفرض اني اريد تشفير حرف a

رقم الاسكي =97

راح اضيف له 3

يساوي 100

100 هو رقم حرف d

اذا اردت فك التشفير ساطرح 3 من الاسكي 100 -3=97 =a

tvquran_6.gif

#20

السلام عليكم,

أخى فهد إنت بس ناسى تجمع الرقم اللى طلع دا على ال ASCII بتاع ال 'a' أو ال 'A' على حسب الحروف الأصلية.

#21

حياك الله أخي بلوتوث.

الصراحه الشفرة في هذا المثال زي مانت شايف بسيطة لكن الملف المثال هو لفك هذه الشفرة لكن انا لا اعرف شئ عن هذه الشفرة.

اعتقد يجب ان اعرف الطريقة التي شفر بها من اجل ان اعكسها.

طبيعي يطلع حروف غامضة اذا كانت الاراقام اصغر من الاسكي a او اكبر من اسكي z.

tvquran_6.gif

#22

السلام عليكم,

قصدى أخى فهد أن ال expression دا فى عملية فك التشفير >

h=char((int(line)+k)%26);

حيطلع حرف ال ASCII بتاعه أصغر من 26 (بغض النظر عن طريقة التشفير) و بالتالى حيبقى مش مقروء و علشان نخليه مقروء نجمع ال 'a' عليه.

طريقة التشفير > Caesar cipher

تم تعديل هذه المشاركة بواسطة Blueteeth في 16 مارس 2008 في 19:17

#23

فعلا %26

تعنى لن تزيد القيمة عن من 0 الى 25 لكن هذا الشفرة الموجوده في محاوله صاحب السؤال.

ومعروف ان الا سكي للحوف يبدى من 97 .

لكن.....

tvquran_6.gif

#24

السلام عليكم:

شكرا لك أخي بلوتوث . الآن انتبهت للرابط الى اسفل وقرات عن الشفرة كسرى شفرة دائرية عندما يصل الى الحرف الاخير يعود للاول.

جزاك الله خير.

انا اسف لم انتبه للرابط إلا الآن. بارك الله فيك.

يصبح فك التشفير فقط السطر التالي.

h=char(int('a')+(int(line)+k)%26);
tvquran_6.gif

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