مساعده rsa


(دمعه مظلوم) #1

[CENTER]السلام عليكم

[RIGHT]محتاج كود خاص بال rsa … بحثت كتير وقرأت اكثر ولكنى لا استطتيع التنفيذ :frowning:



disp('Please enter two large numbers');
p=input('Enter the first number');
q=input('Enter the second number');
for i=2:p-1
    if mod(p,i)==0
        p2=('not prime');
        break;
    else 
        p2=('prime');
    end 
end
for i=2:q-1
    if mod(q,i)==0
        q2=('not prime');
        break;
    else 
        q2=('prime');
    end 
end
s1=strcmp(p2,'prime');
s2=strcmp(q2,'prime');
if s1==1&s2==1
    n=p*q;
    fn=(p-1)*(q-1);
    for i=4:fn-1
        if gcd(i,fn)==1
            e=i;
            break
        end
    end
    for j=0:fn-1
        r=j*e;
        if mod(r,fn)==1
            d=j;
            break
        end
    end
    m=88;
    c=mod(m.^e,n);
    c
    m=mod(c^d,n);
    m
else
 disp(' the first number of second number that you enter are not prime');
end  

هذا الكود قام به احد المشرفيين بهذا المنتدى
[/right]
[/center]


(دمعه مظلوم) #2

للعلم … لقد انتهت من التشفير ب des , t-des, blowfish ولكن ال rsa اشعر بانه اكثر تعقيدا :frowning:


#3

ما المشكلة ؟


(دمعه مظلوم) #4

يوجد قلق + قله تركيز + قله خبره بالماتلاب ادت بان يكون هذا المطلوب

[SIZE=3]

  1. Choose two large prime numbers P and Q

  2. Calculate N= P*Q

  3. Select the public key (the encryption key) E such that it is not a factor of (P-1) and (Q-1)

  4. Select the private key (the decryption key) D such that the following equation is true:
    (DE) mod (P-1)(Q-1) =1

  5. For encryption, calculate the cipher text CT from the plain text PT as follows:
    CT= PTpowerE mod N

  6. Send CT as the cipher text to the receive

  7. for decryption, calculate the plain text PT from the cipher text CT as follows:

PT=CTpowerD mod N

ياخذ الكود الذى قد قمت بوضعه لك برساله خاصه

وهذا هو شرح ما اريد القيام به

[/size]


#5

اخى العزيز يرجى تحديد ما هى المشكلة التى تواجهها فى الماتلاب نظرا لانه ليس لدى خبرة فى مجال التشفير


(دمعه مظلوم) #6

اعتذر اليك لسوء ادارتى للموضوع لكن السبب الاساسى اننى لم افهم ال rsa جيدا

فلو عند حضرتك وقت ولو بسيط جدا ارجو قراءه
http://members.peak.org/~jeremy/rsa.html
وهو فيه تلخيص لكل ما اردت القيام به … فهل ممكن مساعدتك ف عمل برنامج يقوم بمثل هذه الخطوات ؟!!! ولكن على ارقام اوليه كبيره !!؟


(دمعه مظلوم) #7

[I]
اريد برنامج
1- نقوم له بادخال رقمين بشرط ان يكونوا ارقام اوليه غير متشابهه(p,q)
2- وان يتم ضربهم فى بعضهم للحصول على متغير n
3- كود PHP:

phi_n=(p-1)*(q-1);

4- [/i] اختر عدد صحيح e بشرط أن يكون، و e و ليس لهم اي عامل مشترك غير ال 1 (coprime)[I] ووظيفته مشروحه بشكل رائع على هذا الرابط http://members.peak.org/~jeremy/rsa.html#wiener
5- الحصول على قيمه المتغير d
حيث ed mod (p-1)(q-1) = 1

6- ايجاد قيم المتغيرين c,m
حيث
c = me mod n
m = cd mod n[/i]


#8

بالنسبة للبرنامج الذى تريده اعتقد ان البرنامج الذى وضعته فى اول الموضوع يؤدي الوظيفة التى تريدها
اذا لم يمكن هذا يمكنك استعماله والتعديل عليه


#9

جميع ما ذكرته موجود فى البرنامج السابق
بالاضافة الى انه يتأكد ايضا ان المستخدم ادخل رقمين اولين واذا كانوا غير ذلك يعطيه رسالة خطأ


(دمعه مظلوم) #10

قيمه ال d و e مختلفه عن هذا المثال

p=61 and q=53
2) حساب n= pq n=61*53 = 3233
3) حساب الTotient: φ(n) = (p-1)(q-1 φ(n)== (61-1)(53-1) == 3120
4) اختيار e > 1 الذي ليس له اي عامل مشترك غير ال 1 مع ال 3120 e=17
5) حساب d على أن تكون (mod φ(n)) 1 ≡ de d = 2753 17 * 2753 == 46801 == 1 + 15 * 3120
المفتاح العام هو (n= 3233, e= 17). ومعادلة التشفير هي: c== m^e % n == m^17 % 3233
المفتاح الخاص هو (n=3233, d=2753)، ومعادلة فك التشفير هي: m=c^d % n = c ^2753 % 3233
على سبيل المثال، لتشفير m = 123، نحسب c == 123^17 mod 3233 == 855
أو لفك تشفير c = 855، نحسب m=855^2753 mod 3233 = 123


#11

اعتقد هذا الاختلاف بناء على اختيار العامل المشترك e
فانت اختارتها تساوى 17 اما فى المثال السابق كانت تساوى 7
وفى المثال من خلال الاكواد الاتية

    for i=4:fn-1
        if gcd(i,fn)==1
            e=i;
            break
        end
    end

يقوم بانهاء اللوب عند ايجاد اول معامل يعطى واحد مع الرقم 3120
فلماذا اخترتها انت 17 ؟