PDA

View Full Version : حرفه ای: سوال : الگوریتم کد گذاری RSA



MehdiElexal
سه شنبه 29 اردیبهشت 1394, 18:30 عصر
با سلام خدمت دوستان گل
کسی هست که با الگوریتم RSA کار کرده باشه و بدونه کلید های Public و Private در کدوم قسمت کد ساخته میشه ؟
بنده نمیخوام کار ه*ک و از این قبیل کنم و اتفاقا میخوام داده های خاصی که بانکی هستند رو توسط این الگوریتم کد و دیکد کنم
در قسمت کد و دیکد کردن با این الگوریتم مشکلی ندارم صرفا میخوام بدونم کجا کلید های RSA از هم تفکیک میشن و چطور میشه کد رو یک بار با کلید Public باز کرد و یک بار با Private

خلاصه ای از این الگوریتم در ویکی پدیا :
روش کار اینگونه است که هر کاربر دو کلید در دست خود دارد که یکی را در اختیار همه دوستان و اطرافیان برای خواند مطالبی که او کد کرده است قرار می دهد، این همان کلید عمومی یا Public است. حال کافی است که او برای ارسال مطالب به دیگران مطالب را با کلید خصوصی خود کد یا مخفی سازی نماید. دیگران به راحتی می توانند مطالب او را با کلید Public ای که از وی دارند با حالت اولیه بازگردانند (Decrypt) و آنها را مطالعه کنند.
و یا اگر کسی بخواهد برای شما یک مطلب کد شده بفرستد با کلید Public شما آنرا کد می کند و این تنها شما و فقط شما هستنید که می توانید آنرا با کلید Private خود باز کنید و به محتوای اصلی دسترسی داشته باشید.
اساس استفاده از این روش کدینگ یا مخفی سازی اطلاعات به الگوریتم مشهوری بنام Rivest Shamir Adleman یا RSA برمی‌گردد.

اگر کسی نمونه کدی هم داره که بتونه از اون توضییح بده ممنون میشم :)

با تشکر از دوستان گل

MehdiElexal
چهارشنبه 30 اردیبهشت 1394, 12:34 عصر
از اساتید کسی بلد نیست ؟ برنامه نویس دیگه مثل قدیم ها فعال نیست ، هرچی عضو خوب بود انداختید بیرون موندن چند تا بیسواد مثل من البته بلا نصبت عده ای خاص

pouria_bayat
چهارشنبه 30 اردیبهشت 1394, 12:52 عصر
کد Decrypt :


private static string DecryptRSA(string value)
{

byte[] encryptedBytes = System.Convert.FromBase64String(value);
CspParameters cspParams = new CspParameters { ProviderType = 1 };
RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider(cspParams);

rsaProvider.ImportCspBlob(Convert.FromBase64String (DECKeyRSA));

byte[] plainBytes = rsaProvider.Decrypt(encryptedBytes, false);

string plainText = Encoding.UTF8.GetString(plainBytes, 0, plainBytes.Length);

return plainText;
}


کد کردن :


private static string EncryptRSA(string data)
{
CspParameters cspParams = new CspParameters { ProviderType = 1 };
RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider(cspParams);

rsaProvider.ImportCspBlob(Convert.FromBase64String (ENCKeyRSA));

byte[] plainBytes = Encoding.UTF8.GetBytes(data);
byte[] encryptedBytes = rsaProvider.Encrypt(plainBytes, false);

string result = System.Convert.ToBase64String(encryptedBytes);
return result;
}


کلیدها رو به صورت متغیر توی برنامه میتونی تعریف کنی:


private static readonly string ENCKeyRSA = "XXX";
private static readonly string DECKeyRSA = "XXX";

جای مقادیر XXX توی اینترنت سرچ کن کلیدهاشو پیدا میکنی. سخت نیست کافیه یکی از کدها رو توی گوگل سرچ کنی.
موفق باشی.

RmeXXXXXXXXX
چهارشنبه 30 اردیبهشت 1394, 13:34 عصر
http://www.dotnettips.info/ProjectFaq/Faq/8/10

SabaSabouhi
چهارشنبه 30 اردیبهشت 1394, 15:42 عصر
از اساتید کسی بلد نیست ؟ برنامه نویس دیگه مثل قدیم ها فعال نیست ، هرچی عضو خوب بود انداختید بیرون موندن چند تا بیسواد مثل من البته بلا نصبت عده ای خاص

سلام
1. از بزرگواری شما بابت واژه‌ی «بی‌سواد» سپاس‌گزارم.
2. اگه کمی شکیبایی داشتی، پاسخ رو می‌گرفتی، نیازی نیست نیم روز پس از پست اول، پست داده و دیگران رو شرمنده کنی.
3. «استاد» واژه‌ی پارسی هست و هنگام جمع بستن مانند واژه‌های «تازی» شکسته نمی‌شه.
4. بر خلاف نظر شما این سایت بسیار هم فعال هست. دوستانی که وقت خودشون رو برای پاسخ‌گویی به دیگران می‌گذارن کم نیستن.

هر چند که شاید کم لطفی برخی از کاربران انگیزه‌ای برای ادامه باقی نگذاره.

یک «عضو بد» و «بی‌سواد»
صبا صبوحی

MehdiElexal
پنج شنبه 31 اردیبهشت 1394, 16:27 عصر
عزیزم شما به خودت گرفتی انتهاش بلا نصبت گفتم بعدم خودم رو مثال زدم نه شما رو! شماهم میتونی جای اینکه دنبال حواشی باشی از تجربیات زیادتون در اختیار سایرین (بنده ) بگذارید، البته این یک پیشنهاده دوباره احساس جسارت نشه !
پوریا جان ممنون ولی من خودم نمونه کد دارم سوال اصلیم تو Public Private بودن کلید ها هست نه نحوه پیاده سازی این آلگوریتم
RME ممنون ولی من با نحوره پیاده سازی مشکلی ندارم سوالم در ارتباط با کلید ها هست ،
تشکر از همه دوستانی که توجه میکنند