آموزش رمزگذاری (Encryption) و رمزگشایی (Decryption) در زبان سی شارپ

  • یکشنبه ۱۸ آذر ۱۳۹۷
  • بازدید ۹,۱۹۳ نفر

تصویر encryption-and-decryption-in-c-sharp_4941 آموزش رمزگذاری (Encryption) و رمزگشایی (Decryption) در زبان سی شارپ

آموزش رمزگذاری و رمزگشایی در زبان سی شارپ

منظور از رمزگذاری (Encryption) فرآیندی است که طی آن اطلاعات مهم با استفاده از یک یا چند الگوریتم خاص به شکل دیگری تبدیل می شوند. در رمزگذاری داده ها معمولا از یک کلید برای رمزگذاری و رمزگشایی استفاده می شود. همانطور که احتمالا می دانید، رمزگذاری داده ها کار ساده ای نیست که هر کسی بتواند برای خودش یک الگوریتم رمزگذاری ایجاد کند. بنابراین بهتر است به منظور حفظ امنیت داده ها از الگوریتم هایی که توسط مختصصان این زمینه ایجاد شده اند استفاده کنیم.

در مبحث رمزگذاری دو روش مهم وجود دارد که عبارت اند از: رمزگذاری متقارن و رمزگذاری نامتقارن. رمزگذاری متقارن و نامتقارن فرآیندهای مختلفی را به منظور کدگذاری داده ها انجام می دهند. رمزگذاری متقارن بر روی Stream انجام می شود و بنابراین می تواند برای رمزگذاری مقدار زیادی از داده ها استفاده شود. اما رمزگذاری نامتقارن بر روی تعداد کمی از بایت ها اعمال می شود، در نتیجه برای رمزگذاری داده هایی با مقدار کم مورد استفاده قرار می گیرد.

رمزگذاری متقارن

کلاس های رمزنگاری متقارن کنترل شده به همراه یک کلاس Stream ویژه به نام CryptoStream استفاده می شوند که داده ها رمزگذاری شده در آن Stream نوشته می شوند. کلاس CryptoStream  با یک کلاس مدیریت شده از نوع Stream، یک کلاس پیاده سازی شده بر اساس اینترفیس ICryptoTransform و یک enum از نوع CryptoStreamMode که شکل دسترسی به CryptoStream را توصیف می کند مقداردهی اولیه می شود. کلاس CryptoStream  می تواند با هر کلاسی که از کلاس Stream ارث بری می کند (مانند FileStream، MemoryStream و NetworkStream)، مقداردهی اولیه شود. با استفاده از این کلاس می توانید انواع مختلف شیء هایی که از نوع Stream هستند را رمزگذاری کنید.

رمزگذاری نامتقارن

الگوریتم های نامتقارن منابع زیادی را به منظور انجام عملیات رمزگذاری بر روی داده ها نیاز دارند و این موضوع باعث می شود تا امنیت آن نیز افزایش یابد. در این نوع الگوریتم ها هر چه طول کلید بیشتر باشد، امنیت داده رمزگذاری شده نیز افزایش می یابد. رمزگذاری نامتقارن در مواردی خاص مورد استفاده قرار می گیرند (مثلا برای Authentication). به همین دلیل نمی توان از آن برای رمزگذاری های داده هایی با اندازه زیاد استفاده کرد. به طور معمول طول کلیدهای استفاده شده در الگوریتم ها نامتقارن بین 2048 تا 4096 است.

الگوریتم های نامتقارن معمولا برای رمزگذاری مقادیر کوچک داده ها استفاده می شود. به طور معمول، شخصی که رمزگذاری نامتقارن را انجام می دهد، از کلید عمومی تولید شده توسط یک طرف دیگر استفاده می کند. در فریم ورک .Net کلاس RSACryptoServiceProvider برای این منظور ایجاد شده است.

مثالی از الگوریتم AES در زبان سی شارپ

مثال زیر نحوه رمزگذاری متن و فایل با استفاده از الگوریتم رمزگذاری متقارن AES در زبان سی شارپ را نشان می دهد. ظاهر مثال زیر شامل موارد زیر است:

کنترلناممتن
TextBoxTxtPassword
TextBoxTxtPlainText
TextBoxTxtEncryptedText
TextBoxTxtDecryptedText
TextBoxTxtOriginalFilePath
TextBoxTxtEncryptedFilePath
ButtonBtnEncryptTextرمزگذاری متن
ButtonBtnDecryptTextرمزگشایی متن
ButtonBtnBrowseOriginalFile. . .
ButtonBtbBrowseEncryptedFile. . .
ButtonBtnEncryptFileرمزگذاری فایل
ButtonBtnDecryptFileرمزگشایی فایل

تصویری از ظاهر برنامه:

تصویر encryption-and-decryption-in-c-sharp_4941_1 آموزش رمزگذاری (Encryption) و رمزگشایی (Decryption) در زبان سی شارپ

به منظور انجام عملیات رمزگذاری و رمزگشایی یک کلاس با نام AesCryptography ایجاد کنید و کد زیر را در آن بنویسید:

کدهای فایل AesCryptography.cs

کدهای فایل Form1.cs

مثالی از الگوریتم RSA در زبان سی شارپ

مثال زیر نحوه رمزگذاری متن با استفاده از الگوریتم رمزگذاری نامتقارن RSA را نشان می دهد. ظاهر مثال زیر شامل موارد زیر است:

کنترلناممتن
TextBoxTxtPlainText
TextBoxTxtEncryptedText
TextBoxTxtDecrytedText
ButtonBtnEncryptرمزگذاری
ButtonBtnDecryptرمزگشایی

تصویری از ظاهر برنامه:

تصویر encryption-and-decryption-in-c-sharp_4941_2 آموزش رمزگذاری (Encryption) و رمزگشایی (Decryption) در زبان سی شارپ

به منظور انجام عملیات رمزگذاری و رمزگشایی یک کلاس با نام RsaCryptography ایجاد کنید و کد زیر را در آن بنویسید:

کدهای فایل RsaCryptography.cs

محتوای فایل Form1.cs

 

مطالب مرتبط
ثبت نظر
ریفریش کنید!
نظرات کاربران (۳ مورد)
  1. تصویر آواتار کاربر 0
    محمد شنبه , 20 اردیبهشت

    با سلام ارزوز توفیق و سلامتی برایتان ارزمندم عالی بود رمز گذاری

  2. تصویر آواتار کاربر 0
    دایان سه شنبه , 4 شهریور

    کاربردی و مفید ممنون

  3. تصویر آواتار کاربر 0
    علی نجف زاده چهارشنبه , 13 اسفند

    سلام. واقعا سپاسگذارم. بد جوری گیر کرده بودم و نجاتم دادین. خدا خیرتون بدهد.