ה-Namespace השבועי

yuval k

New member
../images/Emo124.gif ה-Namespace השבועי

והפעם, System.Security.Cryptography. אשמח לכל השלמה או תוספת
זהו בהחלט namespace מסובך... מרחב השמות ‏System.Security.Cryptography כולל מחלקות שונות הקשורות בהצפנת נתונים, פיענוחם ופעולות אחרות הקשורות באבטחה (כמו ייצור מספרים ראנדומאליים). תחת מרחב שמות זה ישנם שני מרחבי שמות, שעוסקים באישורים הקשורים להצפנה. System.Security.Cryptography.Xml (שעוסק ב-XML digital signatures), ו-System.Security.Cryptography.X509Certificates. קיימת תמיכה בהצפנות סימטריות וא-סימטריות דרך אלגוריתמים רבים, כגון DES, DSA, RSA, ותמיכה באלגוריתמי hash כמו SHA, MD5.
אירגון אלגוריתמי ההצפנה קיים קלאס בסיסי, אבסטרקטי, שמגדיר את סוג ההצפנה - א-סימטרית (הצפנה שבה יש מפתח פרטי ומפתח ציבורי), סימטרית (מפתח אחד), או "גיבוב" (hash - פונקציה חד-כיוונית שממפה ערך שהיא מקבלת, באורך לא ידוע, לסט מספרים כלשהו, ומחזירה ערך באורך קבוע). עבור קלאסים שמשתמש בפונקציית גיבוב להצפנה, קיימת פונקציה בשם ComputeHash, שמחזירה hash עבור הערך שהיא מקבלת. עבור הצפנות א-סימטריות וסימטריות, קיים קלאס שיורש מהקלאס הבסיסי, ומגדיר התנהגות כללית. ממנו יורש קלאס שמשמש כ-"ServiceProvider", שמבצע את ההצפנה או הפיענוח (הצפנות אלו, בניגוד להצפנות גיבוב, ניתן לפענח אחורה).
המחלקות החשובות AsymmetricAlgorithm - מחלקת הבסיס עבור הצפנה א-סימטרית SymmetricAlgorithm - מחלקת הבסיס עבור הצפנה סימטרית HashAlgorithm - מחלקת הבסיס עבור פונקציות גיבוב CryptoStream - מחלקה היורשת מ-Stream, ומאפשרת לקשר בין stream לבין פעולות הצפנה (שמוגדרות ע"י מחלקות שמממשות את הממשק ICryptoTransform) RNGCryptoServiceProvider - מחלקה לייצור מספרים ראנדומאליים "חזקים". קיימות מחלקות לא מעטות ב-namespace הזה שמגדירות אלגוריתמי הצפנה שונים. את הרשימה המלאה ניתן למצוא ב-MSDN.
 
למעלה