در تمام الگوریتمهای رمزنگاری با کلید متقارن، فرستنده و گیرنده پیام باید کلید رمز را بدانند. وقتی فرستنده پیام از کلیدی یکتا و سری برای رمزنگاری استفاده می کند و گیرندگان پیام از همان کلید برای رمزگشایی بهره می برند، افشای کلید رمز از طریق یکی از گیرندکان پیام ،امنیت همه را به خطر می اندازد.در چنینی وضعیتی فرستنده مجبور خواهد بود با یکایک گیرندگان بطور مجزا بر سر یک کلید سری متقارن توافق کند تا هر یک گیرنده کلید مخصوص خود را داشته و افشای آن در امنیت دیگران خللی ایجاد نکند.در این حالت فرستنده پیام باید به تعداد گیرندگان خود کلید تعریف کرده و از آنها نگهداری کند. تعریف مثلا دهها هزار کلید متقارن برای کاربران و ذخیره و بازیابی مطمئن آنها به نوبه خود مشکل بزرگی است.
در الگوریتمهای کلید عمومی برای رمزنگاری و رمزگشایی از دو کلید کاملا متفاوت استفاده می شود: «کلید عمومی» و «کلید خصوصی».
کلید عمومی برای رمزنگاری اطلاعات بکار می رود و همه آن را میدانند ، زیرا از این کلید صررفا برای رمز کردن اطلاعات استفاده می شود و دشمنان با در اختیار داشتن آن نخواهند توانست داده ها ی رمز شده توسط دیگران را از رمز خارج کنند.
کلید خصوصی کلیدی است که داده های رمز شده با آن رمز گشایی می شوند. این کلید راهیچکس حتی معتمدین و دوستان نمی دانند. بدین ترتیب هر موجودیت در سطح شبکه (اعم از کاربر، ماشین یا پروسه ها) نیاز به دو کلید مستقل دارد که فقط یکی از آنها حساس و سری است و باید به دقت از آن نگهداری کرد.ماهیت الگوریتم رمزنگاری به گونه ای است که در عمل نمی توان با در دست داشتن کلید عمومی کلید خصوصی را استنتاج کرد.
در سال ١٩٧٨ سه نفر به نامهای رىوست ،شامیر و اَدِلمن الگوریتمی را برای پیاده سازی رمزنگاری کلید عمومی با یک جفت کلید معرفی کردند که به RSA شهرت یافت و در طول سه دهه اخیر بطور گسترده ای مورد استفاده قرار گرفته و در گذر زمان، سخت افزار و نرم افزارهای بهینه آن به بازار عرضه شد. اگر چه بعدها الگوریتم قویتری بنام El Gamal ابداع شد اما هنوز هم روش RSA در صدر فهرست الگوریتمهای کلید عمومی قرار دارد
برای اطلاعات دقیق تر و به اصطلاح بالای دیپلم می تونید متن کامل این مقاله رو در
اینجا مطالعه کنید