سورس کد الگوریتم DES با زبان سی شارپ به همراه پیاده سازی تمام مراحل

  • شنبه ۵ دی ۱۳۹۴
  • بازدید 2,466 نفر
  • 1 امتیاز2 امتیاز3 امتیاز4 امتیاز5 امتیاز (243 امتیاز از 53 رای)
    Loading...

des csharp تصویر

سورس کد الگوریتم DES با زبان سی شارپ به همراه پیاده سازی تمام مراحل

در این پست سورس کد الگوریتم DES با زبان سی شارپ را بدون استفاده از توابع آماده سی شارپ برای شما کاربران گرامی آماده کرده ایم و تمام مراحل الگوریتم DES در این پروژه از اول کد نویسی و پیاده سازی شده است. در صورت نیاز به پروژه الگوریتم DES در زبان سی پلاس پلاس نیز آن را آماده داریم و دقیقا کد های استفاده شده در سورس کد الگوریتم DES با زبان سی شارپ نیز در آن پیاده سازی شده است.

الگوریتم DES به‌ عنوان یک الگوریتم استاندارد کدگذاری است و طرز کار الگوریتم DES به این شکل است که یک متن با طول ثابت را به عنوان ورودی می‌گیرد و پس از انجام عملیات مختلف بر روی رشته وارد شده یک خروجی که طولش برابر با طول متن وارد شده است را بر میگرداند. الگوریتم DES از یک کلید برای ایجاد رمز استفاده می‌کند و تنها کاربرانی می توانند عمل رمزگشایی را انجام دهند متن کلید را داشته باشند.

بعد از شگستن الگوریتم DES دیگر این الگوریتم استفاده نشد و به جای آن الگوریتم AES به عنوان استاندارد جایگزین آن مورد تائید قرار گرفت. الگوریتم AES مانند الگوریتم DES یک الگوریتم رمزقطعه‌ای است و برعکس الگوریتم DES از ساختار فیستل استفاده نمی‌کند. حمله side channel حمله شناخته شده بر الگوریتم AES بوده‌است.

جهت مشاهده توضیحات کامل در مورد سورس کد الگوریتم DES با زبان سی شارپ به همراه پیاده سازی تمام مراحل آن به ادامه مطلب مراجعه کنید.

مراحل پیاده سازی الگوریتم DES:

در الگوریتم DES طول قطعات به ۶۴ بیت تقسیم شده است و کلید این الگوریتم نیز شامل ۶۴ بیت خواهد بود و تنها از ۵۶ بیت آن استفاده می‌شود و ۸ بیت باقیمانده برای چک کردن parity مورد استفاده قرار می گیرد. الگوریتم DES شامل ۱۶ مرحله مشابه‌ است و هر مرحله یک دور نامیده می‌شود. در واقع متن اولیه ما که می خواهیم آن را رمز کنیم ابتدا به تابع مربوط به جایگشت اولیه (IP) ارسال می شود. بعد از اجرای عملیات پیچیده وابسته به کلید در مرحله بعد یک جایگشت نهایی (FP) بر روی آن اعمال خواهد شد. IP و FP معکوس همدیگر هستند و در واقع تابع FP عملی که توسط تابع IP انجام شده‌ است را خنثی خواهد کرد. بهم همین خاطر از نظر رمزنگاری اهمیت زیادی ندارند و برای آسان کردن عمل بارگذاری در قطعات داده در سخت‌افزارهای دهه ۱۹۷۰ استفاده می شود. در این الگوریتم قبل عملیات اصلی، اطلاعات به دو قسمت ۳۲ بیتی تقسیم می‌شود که این دو بخش به طور پی در پی مورد پردازش قرار می‌گیرند این عمل به عنوان شکل فیستل شناخته شده است. ساختار فیستل تضمین کننده این است که عمل رمزگذاری و عمل رمزگشایی هر دو رویه کاملاً شبیه هم هستند فرق آنها در این است که زیر کلیدها در زمان رمزگشایی در جهت معکوس رمزگذاری استفاده می شود به همین خاطر دیگر نیازی به الگوریتم‌های دیگری برای رمزگذاری و رمزگشایی نیست. تابعی که خروجی IP را گرفته و پس از طی کردن ۱۶ مرحله ورودی FP را تولید می‌کند تابع F نامیده می‌شود. این تابع دو ورودی دارد که یکی ۳۲ بیتی و دیگری ۴۸ بیتی است و یک خروجی ۳۲ بیتی تولید می‌کند. در اینجا دو بلاک وجود دارد که ۳۲ بیت سمت چپ با L و ۳۲ بیت سمت راست با R مشخص شده است.

در شکل زیر نمای کلی الگوریتم DES رو مشاهده می کنید.

des csharp 2 تصویر

(نمای کلی الگوریتم DES)

در فرمول زیر اگر K یک بلاک ۴۸ بیتی باشد که از کلید اصلی که ۶۴ بیتی است مشتق شده‌ باشد آنگاه خروجی یک دور با ورودی LR و خروجی L1R1 به صورت زیر تعریف می‌شود.

L1=R R1=L XOR F(R,K)

در فرمول زیر اگر KS نام تابعی باشد که کلید ۶۴ بیتی آن KEY در نظر گرفته شود و یک عدد صحیح ما بین ۱ تا ۱۶ را به عنوان پارامتر ورودی بگیرد و کلید ۴۸ بیتی Kn را به عنوان عدد خروجی تولید کند آنگاه بیتهای Kn از تغییر محل بیتهای KEY حاصل می شود.

Kn= KS (n.KEY)

همچنین KS را تابع key schedule می‌نامند.

Ln=Rn-1 Rn=Ln-1 XOR f(Rn-1,Kn)

برای رمزگشایی نیز از فرمول زیر استفاده می شود:

R=L1 L=R1 XOR f(L1,K)

عمل رمزگشایی با همان الگوریتمی که برای عمل رمزگذاری استفاده شد انجام گرفته می شود و در هر مرحله همان K بیتی که به عنوان کلید برای رمزگذاری استفاده شده بود مورد استفاده قرار می‌گیرد.

Rn-1=Ln Ln-1=Rn XOR f(Ln,Kn)

جهت انجام محاسبات رمزگشایی R16L16 ورودی IP و R0L0 ورودی تابع FP است. کلید ۱۶ در مرحله اول، کلید ۱۵در مرحله دوم و به همین ترتیب کلید اول در مرحله ۱۶ مورد استفاده قرار می‌گیرد.

تابع F:
بسط: با استفاده از این مرحله یک جایگشت انبساطی ۳۲ بیتی به ۴۸ بیتی گسترش داده خواهد شد.

ترکیب کلید: با استفاده از این مرحله حاصل مرحله قبل با یک زیر کلید XOR خواهد شد. ۶ کلید ۴۸ بیتی با استفاده از الگوریتم key schedule از کلید اصلی تولید خواهد شد.

جایگزینی: پس از ترکیب کلید هر قطعه داده به هشت قسمت ۶ بیتی هر کدام از s-box ها ورودی ۶ بیتی خود را به یک خروجی ۴ بیتی تبدیل می‌کند S-boxها قلب الگوریتم DES هستند و بدون آنها رمز خطی خواهد بود و در نتیجه قابل شکستن خواهد شد.

جایگشت: در آخر ۳۲ بیت خروجی S-box ها بوسیله یک جایگشت ثابت مجدداً سازماندهی می‌شود که با نام P-box شناخته شده است.

در شکل زیر تابع F رو مشاهده می کنید.

des csharp 3 تصویر

(شکل تابع F)

الگوریتم Key Schedule:
این الگوریتم برای تولید زیر کلیدها استفاده خواهد شد. در گام اول ۵۶ بیت از ۶۴ بیت اطلاعات کلید توسط تابع جایگشت۱ (PC1) انتخاب می‌شوند و ۸ بیت باقیمانده یا دور ریخته می‌شوند و یا به عنوان parity مورد استفاده قرار می‌گیرند در مرحله بعد این ۵۶ بیت به دو نیمه ۲۸ قسمتی تقسیم می‌شوند و پس از آن با هر نیمه به طور جداگانه رفتار خواهد شد. در دور بعدی هر دو نیمه یک یا دو بیت به سمت چپ انتقال می‌یابند و ۴۸ بیت زیر کلید توسط جایگشت۲ (PC2) انتخاب خواهد شد. ۲۴ بیت، نیمه راست و ۲۴ بیت دیگر در نیمه چپ ایجاد می شود. با استفاده از انتقال در هر زیر کلید مجموعه متفاوتی از بیتها مورد استفاده قرار می‌گیرد. هر بیت تقریباً در ۱۴ تا ۱۶ زیر کلید مورد استفاده قرار می گیرد. الگوریتم key schedule در عمل رمزگشایی مثل رمزگذاری است ولی زیر کلیدها در مقایسه با رمزگذاری در جهت عکس هستند به غیر از این تغییر بقیه الگوریتم مانند رمزگذاری انجام می‌شود.

در شکل زیر تولید کلید مراحل مختلف رو مشاهده می کنید.

des csharp 4 تصویر

(تولید کلید مراحل مختلف)

در ادامه فیلمی از نحوه کار کردن سورس کد الگوریتم DES با زبان سی شارپ به همراه پیاده سازی تمام مراحل را قرار داده ایم که می توانید مشاهده کنید.


پروژه ها و آموزش های برنامه نویسی

پروژه ها و آموزش های برنامه نویسی

آموزش برنامه نویسی

مشاهده ویدئو در این باره

خوشحال خواهیم شد اگر نظر خودتون رو درباره این مطلب ثبت کنید

خطا!دکمه ریفریش را بزنید
  1. تصویر آواتار کاربر 0
    زهرا شکرپور چهارشنبه , 23 تیر

    سلام یه پروژه با سی شارپ دارم می تونید انجام بدید. اگه قابل انجامه چه مدت زمان لازمه ؟

    • تصویر آواتار کاربر 2
      نوآوران گرمیچهارشنبه , 23 تیر

      هزینه و زمان بستگی به کار داره که باید بررسی بشه. توضیحات پروژه مورد نظر رو به ایمیلی که در سایت اعلام کردیم ارسال کنید بررسی کنیم.

لیســــــــت پــــــــروژه های انتشــــــــار نشده ( 22 موضوع )

مشاهده لیست کامل
مشاهده لیست کامل
مشاهده لیست کامل
مشاهده لیست کامل
socket programing آموزش برنامه نویسی آموزش سی شارپ اینترنت اشیا بازی تحت شبکه بازی تحت شبکه به زبان سی شارپ برنامه تحت شبکه با سی شارپ برنامه نویسی ترجمه مقاله ترجمه مقاله شبکه دانلود رایگان پروژه های دانشجویی دانلود سورس برنامه دانلود سورس رایگان دانلود نرم افزار دانلود پروژه دانشجویی دانلود پروژه رایگان دانلود پروژه های دانشجویی دانلود کتاب دانلود کتاب آموزشی دانلود کتاب اموزشی سورس رایگان سورس کد بازی تحت شبکه سورس کد بازی تحت شبکه با C# سورس کد بازی تحت شبکه چند نفره سوکت پروگرمین شبکه SDN شبیه سازی با نرم افزار R نحوه نوشتن برنامه تحت شبکه نرم افزار Rstudio پروژه arena پروژه matlab پروژه ns2 پروژه opnet پروژه ارنا پروژه سیمولینک matlab پروژه شبکه عصبی پروژه مهندسی صنایع پروژه مهندسی صنایع با ارنا پروژه های آماده با OpenGL پروژه های آماده با OpenGL در سی پلاس پلاس پروژه های آماده با ارنا پروژه های آماده برای درس گرافیک کامپیوتری پروژه هوش مصنوعی پروژه پردازش تصویر matlab پروژه پردازش سیگنال matlab