ساخت فایل و رمزنگاری آن در #C
فرمت های رمزنگاری یک فایل و محتوای آن در سی شارپ
منظور از رمزگذاری (Encryption) فرآیندی است که طی آن اطلاعات مهم با استفاده از یک یا چند الگوریتم خاص به شکل دیگری تبدیل می شوند. در رمزگذاری داده ها معمولا از یک کلید برای رمزگذاری و رمزگشایی استفاده می شود. همانطور که احتمالا می دانید، رمزگذاری داده ها کار ساده ای نیست که هر کسی بتواند برای خودش یک الگوریتم رمزگذاری ایجاد کند. بنابراین بهتر است به منظور حفظ امنیت داده ها از الگوریتم هایی که توسط مختصصان این زمینه ایجاد شده اند استفاده کنیم.
در مبحث رمزگذاری دو روش مهم وجود دارد که عبارت اند از: رمزگذاری متقارن و رمزگذاری نامتقارن. رمزگذاری متقارن و نامتقارن فرآیندهای مختلفی را به منظور کدگذاری داده ها انجام می دهند. رمزگذاری متقارن بر روی Stream انجام می شود و بنابراین می تواند برای رمزگذاری مقدار زیادی از داده ها استفاده شود. اما رمزگذاری نامتقارن بر روی تعداد کمی از بایت ها اعمال می شود، در نتیجه برای رمزگذاری داده هایی با مقدار کم مورد استفاده قرار می گیرد.
رمزگذاری متقارن
کلاس های رمزنگاری متقارن کنترل شده به همراه یک کلاس Stream ویژه به نام CryptoStream استفاده می شوند که داده ها رمزگذاری شده در آن Stream نوشته می شوند. کلاس CryptoStream با یک کلاس مدیریت شده از نوع Stream، یک کلاس پیاده سازی شده بر اساس اینترفیس ICryptoTransform و یک enum از نوع CryptoStreamMode که شکل دسترسی به CryptoStream را توصیف می کند مقداردهی اولیه می شود. کلاس CryptoStream می تواند با هر کلاسی که از کلاس Stream ارث بری می کند (مانند FileStream، MemoryStream و NetworkStream)، مقداردهی اولیه شود. با استفاده از این کلاس می توانید انواع مختلف شیء هایی که از نوع Stream هستند را رمزگذاری کنید.
رمزگذاری نامتقارن
الگوریتم های نامتقارن منابع زیادی را به منظور انجام عملیات رمزگذاری بر روی داده ها نیاز دارند و این موضوع باعث می شود تا امنیت آن نیز افزایش یابد. در این نوع الگوریتم ها هر چه طول کلید بیشتر باشد، امنیت داده رمزگذاری شده نیز افزایش می یابد. رمزگذاری نامتقارن در مواردی خاص مورد استفاده قرار می گیرند (مثلا برای Authentication). به همین دلیل نمی توان از آن برای رمزگذاری های داده هایی با اندازه زیاد استفاده کرد. به طور معمول طول کلیدهای استفاده شده در الگوریتم ها نامتقارن بین ۲۰۴۸ تا ۴۰۹۶ است.
الگوریتم های نامتقارن معمولا برای رمزگذاری مقادیر کوچک داده ها استفاده می شود. به طور معمول، شخصی که رمزگذاری نامتقارن را انجام می دهد، از کلید عمومی تولید شده توسط یک طرف دیگر استفاده می کند. در فریم ورک .Net کلاس RSACryptoServiceProvider برای این منظور ایجاد شده است.