Michael Walker CS 253 Dr. Chodrow RSA Cryptosystem discussion The RSA cryptosystem uses number theory and modular arithmetic to encrypt a message taken in as a stream of characters and converted to ascii format. My program driver displays the ascii message, the encrypted message, the decrypted message, and the original message after decoding and decrypting. Because my constants are small compared to the normal RSA constants, and because my message is padded with 32 extra bits for security, the message must be very small. Destroying p, q, and N' is important if the message is to be safely encrypted. If someone had p and q, calculating the variables needed to encrypt or decrypt the message. Similarly, N' is (p-1) * (q-1), where p and q are prime. Because N' is the unique product of two primes - 1, the code breaker could make a function that could find the primes in a relatively small amount of time. Thus, all three should be discarded, as they are unnecessary for decryption and encryption, and as they pose a security problem if they get into the wrong hands. Sending a byte of encrypted message at a time is a bad idea. Because a character is normally 1 byte, the malicious reciever could guess that each byte represented an encrypted character. Because a byte is 8 bits (0 or 1), there are only 2^8, or 256, possibilities for the byte. Thus, finding the byte representation for the character is not difficult, and the message will be insecure. On the other hand, a long key ensures that the encryption will be harder to break. A 130 digit (500 bit) prime set gives 2^500 different bit possibilities (a very large number!). Discovering a key this large takes a long time using a large amount of computing power.