قبلا در مورد رمزنگاری و الگوریتم های مختلف آن مطالبی نوشتیم، در این پست مختصر قصد دارم گذری بر انواع کتابخانه های امنیتی و الگوریتم های مناسب برای هر کاری را معرفی کنم، سکوی دات نت بسیاری از استاندارد های الگوریتم های رمزنگاری را پشتیبانی میکند و کتابخانه بسیار قابل توسعه ای دارد.
ساختار سیستم رمزنگاری دات نت از یک سلسه مراتب سه سطحی تشکیل شده است، به این صورت که سطح اول کلاس های نوع مجرد هستند که از سه کلاس مجرد SymmetricAlgorithm, AsymmetricAlgorithm, و HashAlgorithm تشکیل شده است که هر سه کلاس مجرد (Abstract) هستند و سطح دوم کلاس های الگوریتم های مختلف از یکی از این سه کلاس مجرد مشتق شده اند مانند کلاس های Aes, RSA, ویا ECDiffieHellman و سطح سوم پیاده سازی کلاس های الگوریتم هستند مانند AesManaged, RC2CryptoServiceProvider, و یا ECDiffieHellmanCng .
این الگوی کلاس های مشتق شده به ما امکان اضافه کردن یک الگوریتم رمزنگاری جدید و یا یک پیاده سازی جدیدی از الگوریتم موجود را میدهد. برای مثال برای ایجاد یک الگوریتم کلید عمومی باید یک کلاس که از کلاس AsymmetricAlgorithm مشتق میشود ایجاد کنیم. یا برای ایجاد یک پیاده سازی جدید از یک الگوریتم خاص باید کلاسی ایجاد کنیم که از یک کلاس غیر مجرد مربوط به همان الگوریتم مشتق میشود.
- برخی کلاس های دات نت که انتهای عنوان آن *CryptoServiceProvider هستند در واقع یک کلاس بسته بند (Wrapper) برای پیاده سازی Windows Cryptography API (CAPI) یک الگوریتم هستند.
- برخی کلاس های دات نت که انتهای عنوان آنها *Cng دارند در واقع یک کلاس بسته بند (Wrapper) برای پیاده سازی Windows Cryptography Next Generation (CNG) هستند.
- و در نهایت برخی از کلاس های دات نت که انتهای آنها *Managed دارند نسخه پیاده سازی شده کاملا تحت دات نت (کد مدیریت شده) هستند. پیاده سازی های مدیریت شده توسط Federal Information Processing Standards (FIPS) تائید نشده اند و ممکن است از دو گروه قبل کندتر باشند.