diff --git a/README.md b/README.md
index 5ee9cad..590bb4b 100644
--- a/README.md
+++ b/README.md
@@ -67,6 +67,7 @@ So far, the following projects have been integrated to this repo:
|[Youtube video downloader](https://github.com/hastagAB/Awesome-Python-Scripts/tree/master/Youtube_Video_Downloader)|[Christopher He](https://github.com/hecris)|
|[Zabbix API](https://github.com/hastagAB/Awesome-Python-Scripts/tree/master/zabbix_api)|[msg4sunny](https://github.com/msg4sunny)|
|[Zip password cracker](https://github.com/hastagAB/Awesome-Python-Scripts/tree/master/zip_password_cracker)|[umar abdullahi](https://github.com/umarbrowser)|
+|[RSA Algorithm](https://github.com/hastagAB/Awesome-Python-Scripts/tree/master/RSA_Algorithm)|[Chinmay Rane](https://github.com/Chinmayrane16)
|[CLI Calculator](https://github.com/hastagAB/Awesome-Python-Scripts/tree/master/cli_calculator)|[Willian GL](https://github.com/williangl) |
|[Find PhoneNumber in String](https://github.com/hastagAB/Awesome-Python-Scripts/tree/master/Find-PhoneNumber-in-String)|[Austin Zuniga](https://github.com/AustinZuniga)|
|[IMDB TV Series Info Extractor](https://github.com/hastagAB/Awesome-Python-Scripts/tree/master/imdb_episode_ratings)|[Yash Raj Sarrof](https://github.com/yashYRS) |
diff --git a/RSA_Algorithm/README.md b/RSA_Algorithm/README.md
new file mode 100644
index 0000000..3f18585
--- /dev/null
+++ b/RSA_Algorithm/README.md
@@ -0,0 +1,25 @@
+# RSA Algorithm
+* Python script that encrypts and decrypts a text based on [RSA algorithm](https://people.csail.mit.edu/rivest/Rsapaper.pdf)
+* It involves the concept of modular arithmatic and euler's theorem.
+* It is also based on the idea that factorizing large numbers requires years.
+* Here, the (a,n) are kept public and (p,q,b) are kept private.
+
+![](https://github.com/Chinmayrane16/Awesome-Python-Scripts/blob/master/RSA_Algorithm/RSA_Algorithm.png)
+
+## Usage
+For Windows users:
+
+```bash
+$ python RSA_Algorithm.py
+```
+
+For Mac/Linux/Unix users:
+
+```bash
+$ ./RSA_Algorithm.py
+```
+
+## References
+[Blog](https://www.di-mgt.com.au/rsa_alg.html)
+[Paper](https://people.csail.mit.edu/rivest/Rsapaper.pdf)
+[Video](https://www.youtube.com/watch?v=wXB-V_Keiu8)
diff --git a/RSA_Algorithm/RSA_Algorithm.png b/RSA_Algorithm/RSA_Algorithm.png
new file mode 100644
index 0000000..9bb8e22
Binary files /dev/null and b/RSA_Algorithm/RSA_Algorithm.png differ
diff --git a/RSA_Algorithm/RSA_algorithm.py b/RSA_Algorithm/RSA_algorithm.py
new file mode 100644
index 0000000..3a23b83
--- /dev/null
+++ b/RSA_Algorithm/RSA_algorithm.py
@@ -0,0 +1,185 @@
+"""
+For more information on the algorithm, refer the following links:
+
+https://www.di-mgt.com.au/rsa_alg.html
+https://people.csail.mit.edu/rivest/Rsapaper.pdf
+https://www.youtube.com/watch?v=wXB-V_Keiu8
+
+"""
+
+
+def isPrime(n):
+ prime = [True for i in range(n+1)]
+ p = 2
+ while p*p<=n:
+ if prime[p]==True:
+ for i in range(p*p,n+1,p):
+ prime[i]=False
+ p+=1
+
+ return prime[n]
+
+
+def gcd(a,b):
+ while b!=0:
+ r = a%b
+ a=b
+ b=r
+ return a
+
+def Multiplicative_inverse(a,b):
+ s1 = 1
+ s2 = 0
+ m = b
+ while b!=0:
+ q=a//b
+ r=a%b
+ a=b
+ b=r
+ s=s1-q*s2
+ s1=s2
+ s2=s
+
+ if s1<0:
+ s1+=m
+
+ return s1
+
+def powermod(x,y,p):
+ res = 1
+
+ x = x%p
+ while (y>0):
+
+ if (y%2) == 1:
+ res = (res*x)%p
+
+ y = y//2
+ x = (x*x)%p
+
+ return res
+
+if __name__ == '__main__':
+ while (True):
+ res = input('Do you want to enter prime numbers (y) or let the algorithm do it for you (n) or exit (e)? (y/n/e): ')
+ if res == 'y':
+ while True:
+ p = 13
+ p = int(input('Enter a prime number: '))
+ if isPrime(p):
+ break
+ else:
+ print(p,'is not a prime number')
+ continue
+
+ while True:
+ q = 17
+ q = int(input('Enter a different prime number: '))
+ if isPrime(q) and (p*q>26):
+ break
+ else:
+ print('Both the prime numbers are same!! or product of both the prime numbers is less than 26!!')
+ continue
+
+ n = p*q
+ phi_n = (p-1)*(q-1)
+ a = 19
+ while True:
+ a = int(input('Enter a number such that Greatest Common Divisor of that number with '+ str(phi_n) + ' is 1: '))
+ if gcd(a,phi_n)!=1:
+ continue
+ else:
+ break
+
+ b = Multiplicative_inverse(a,phi_n)
+ message = input('Enter the message to be encrypted (lower case): ')
+ message = message.lower()
+
+ encrypted_string = ""
+ encrypted_num = []
+
+ for i in range(len(message)):
+ ch = message[i]
+ if ch!=' ':
+ m = ord(ch) - 97
+ e = powermod(m,a,n)
+ encrypted_num.append(e)
+ encrypted_string += chr(e%26 + 97)
+ else:
+ encrypted_string +=' '
+
+ print('Encrypted message is:', encrypted_string)
+ print(encrypted_num)
+ res = input("Do you want to decrypt it too? (y/n): ")
+ if res == 'y':
+ decrypted = ''
+ j=0
+ for i in range(len(encrypted_string)):
+ ch = message[i]
+ if ch != ' ':
+ e = encrypted_num[j]
+ m = powermod(e,b,n)
+ ch = chr(m+97)
+ decrypted+=ch
+ j+=1
+ else:
+ decrypted+=' '
+
+ print("Decrypted message is:",decrypted)
+ else:
+ ans = input("Do you want to continue? (y/n): ")
+ if ans == 'y':
+ continue
+ else:
+ break
+
+ elif res == 'n':
+ p = 13
+ q = 17
+ n = p*q
+ a = 5
+ b = 77
+ message = input('Enter the message to be encrypted (lower case): ')
+ message = message.lower()
+
+ encrypted_string = ""
+ encrypted_num = []
+
+ for i in range(len(message)):
+ ch = message[i]
+ if ch!=' ':
+ m = ord(ch) - 97
+ e = powermod(m,a,n)
+ encrypted_num.append(e)
+ encrypted_string += chr(e%26 + 97)
+ else:
+ encrypted_string +=' '
+
+ print('Encrypted message is:', encrypted_string)
+ res = input("Do you want to decrypt it too? (y/n): ")
+ if res == 'y':
+ decrypted = ''
+ j=0
+ for i in range(len(encrypted_string)):
+ ch = encrypted_string[i]
+ if ch != ' ':
+ e = encrypted_num[j]
+ m = powermod(e,b,n)
+ ch = chr(m+97)
+ decrypted+=ch
+ j+=1
+ else:
+ decrypted+=' '
+
+ print("Decrypted message is:",decrypted)
+ else:
+ ans = input("Do you want to continue? (y/n): ")
+ if ans == 'y':
+ continue
+ else:
+ break
+ elif res == 'e':
+ break
+ else:
+ print('Invalid command!')
+ continue