הצפנה
1. קודם כל לא בדיוק הבנתי מה אתה מנסה להעביר. איפה יושב כל רכיב שלך, איך מתבצעת התקשורת בינהם, מה הסיבה שאתה מנסה להצפין אותה (מה המטרה שלך בזה) ומה בדיוק עובר שם. 2. השימוש היחיד למטרות הצפנה (כלומר לא חתימה דיגיטלית וכו' אלא הצפנה פרופר) שיש לעשות באלגריתמים לא סימטרים (ו RSA הוא אחד מהם) הוא הפצת מפתחות, כלומר כדי לסנכרן מפתחות הצפנה סימטרים בין הגורמים שמתקשרים. 3. כדאי תמיד, אלא אם יש לך סיבה ספציפית וטובה להימנע מזה, לא ליצור מפתח מסוג מסויים אלא ליצור מפתח מתוך אלגריתם דיפולטי, זה נכון בעיקר במפתחות לא סימטרים בדוט נט כי יש בעצם היום רק אופציה אחת, RSA. אם תעשה דבר כזה:
AsymmetricAlgorithm key = AsymmetricAlgorithm.Create();
תקבל מפתח שכשיריצו את הקוד היום הוא יהיה מסוג RSA אבל כשיריצו בעוד שנה, אם יהיו שינויים ב default config של הפריימוורק המפתח שלך יגיב בהתאם, כך שאם הגירסה הבאה של הפריימוורק תכיל שינויים, מפתחות מסוגים חדשים, או מחלקות אחרות ויחליטו להגדיר אותן כברירת מחדל (דרך אגב, אתה יכל די בקלות לשנות מה ברירת המחדל על המכונה שלך) הקוד שלך יגיב בהתאם.