سورس الگوریتم رمزنگاری RSA به زبان C
در این بخش سورس الگوریتم رمزنگاری RSA به زبان C را برای شما آماده کرده ایم که با استفاده از نرم افزار DevC++ نسخه ۵٫۱۱ با زبان برنامه نویسی C نوشته شده است. در ادامه می توانید توضیحات، تصاویر و همچنین فیلمی از نحوه اجرا شدن پروژه را مشاهده کنید.
توضیحات پروژه
RSA (Rivest–Shamir–Adleman) یکی از اولین سیستم های رمزنگاری بر اساس کلید عمومی است که به طور گسترده به منظور انتقال ایمن داده ها مورد استفاده قرار می گیرد. در چنین سیستم هایی از کلید عمومی برای رمزگذاری و از کلید خصوصی که با کلید عمومی تفاوت دارد، برای رمزگشایی استفاده می شود.
در این پروژه بعد از اجرا شدن برنامه، از کاربر مقادیر p و q دریافت شده و بعد از یک متن ساده دریافت می شود و سپس برنامه با استفاده از الگوریتم رمزنگاری RSA متن وارد شده را رمزگذاری کرده و در خروجی نمایش می دهد و بعد از آن هم دوباره متن رمزگذاری شده را به حالت اول یعنی متن ساده باز میگرداند. شما با مشاهده سورس کد این پروژه می توانید با روش رمزگذاری و رمزگشایی داده ها آشنا شده و در برنامه های خود از آن استفاده کنید. البته برای برنامه های واقعی و بزرگ بهتر است از روش هایی که توسط برنامه نویسان دیگر تست شده و امنیت لازم را دارد استفاده شود و نباید از الگوریتم یا روشی که خودتان درست می کنید استفاده کنید، چون ممکن است باگ داشته باشد.
قسمت های از سورس کد
#include <math.h> #include <string.h> #include <stdio.h> #include <stdlib.h> int isPrime(long int prime); long int calculateE(long int t); long int greatestCommonDivisor(long int e, long int t); long int calculateD(long int e, long int t); long int encrypt(long int i, long int e, long int n); long int decrypt(long int i, long int d, long int n); int main() { long int p, q, n, t, e, d; long int i; long int encryptedText[100]; memset(encryptedText, 0, sizeof(encryptedText)); long int decryptedText[100]; memset(decryptedText, 0, sizeof(decryptedText)); int flag; char msg[100]; printf("Welcome to RSA program\n\n"); do { printf("Enter a Prime number p: "); scanf("%ld", & p); flag = isPrime(p); if (!flag) { printf("\nWRONG INPUT (This number is not Prime. A prime number is a natural number greater than 1 that has no positive divisors other than 1 and itself)\n"); } } while (!flag); do { printf("Enter a Prime number q :"); scanf("%ld", & q); flag = isPrime(q); if (!flag) { printf("\nWRONG INPUT (This number is not Prime. A prime number is a natural number greater than 1 that has no positive divisors other than 1 and itself)\n"); } } while (!flag); n = p * q; printf("\nResult of computing (n = p*q) = %ld \n", n); t = (p - 1) * (q - 1); printf("Result of computing Euler's totient function:\t t = %ld", t); e = calculateE(t); d = calculateD(e, t); printf("\nRSA public key is (n = %ld, d = %ld)\n", n, e); printf("RSA private key is (n = %ld, d = %ld)\n", n, e); printf("\nEnter Message to be encrypted: "); fflush(stdin); gets(msg); for (i = 0; i < strlen(msg); i++) { encryptedText[i] = encrypt(msg[i], e, n); } printf("\nTHE ENCRYPTED MESSAGE IS: "); for (i = 0; i < strlen(msg); i++) { printf("%c", (char) encryptedText[i]); } for (i = 0; i < strlen(msg); i++) { decryptedText[i] = decrypt(encryptedText[i], d, n); } printf("\n\nTHE DECRYPTED MESSAGE IS: "); for (i = 0; i < strlen(msg); i++) { printf("%c", (char) decryptedText[i]); } printf("\n"); system("pause>nul"); return 0; }
نوشته سورس الگوریتم رمزنگاری RSA به زبان C اولین بار در سورس سرا - آموزش برنامه نویسی. پدیدار شد.