Skip to content

CS463 Semester Project - RSA Educational Calculator app

Notifications You must be signed in to change notification settings

JFles/CS463_RSACalculator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RSA Calculator

Introduction

The purpose of this app is to educate users on the process of RSA key generation, encryption, and decryption. The app allows users to experiment with different values involved in the RSA process to explore how it all works.

Program Specs

The app is implemented in SwiftUI and Combine as an iOS app. In order to support the calculations involved in RSA encryption and decryption formulas, a BigInt dependency was added.

Implementation

The app starts by prompting the user to enter two unique prime numbers. Afterwards, N and r are calculated and displayed to the user. Next, the user chooses a valid K value that satisfies K = (e * d == 1 mod r). Once the user chooses a K value, the values for K = e * d are displayed for the user. When the user scrolls to the next step, e and d are prepopulated with descriptions of their preconditions and addressing which is the public and private key. Below there, the user is shown the standard RSA keypair generic format and the formatted keypair as calculated. Lastly, the user is able to enter a message m as a positive integer that satisfies the condition 1 < m < N. Once a valid m value is entered, the user is shown the encryption and decryption RSA formulas, and they are able to encrypt and decrypt the message m.

Screenshots

Screen 1

Screen 2

Screen 3

Conclusion

RSA is a fascinating cryptographic standard, and hopefully this app has provided a way to teach those newer to modern cryptography how to calculate and utilize RSA key generation, encryption, and decryption.

About

CS463 Semester Project - RSA Educational Calculator app

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages