Feature: Add Vigenere Cipher app specification

Add Vigenere Cipher app specification

Resolves: N/a
See also: N/a
feature/vigenere-cipher
jdmedlock 5 years ago
parent 8014430621
commit 7ae8b4f6f5

@ -0,0 +1,68 @@
# Vigenere Cipher
**Tier:** 1-Beginner
The rate and impact of security breaches in recent years makes it imperative
that developers understand the methods bad actors use to compromise apps.
Understanding how an app can be compromised is the first step in coming up
with effective protection measures.
One of the easiest ways bad actors can compromise an app is to access
data that's left unencrypted by the developer. There are a number of strong
encryption algorithms available to ensure that data is not readable even if
access is compromised. These include AES, Blowfish, and TripleDES to name a
few.
However, these algorithms can be quite complex to implement so the objective
of this app is to implement a classical encryption algorithm, the Vigenere
Cipher to learn the basics of how ciphers work.
### Requirements & Constraints
- Developers should use only native language features to implement the Vigenere
Cipher. Libraries are not allowed.
- Developers should design and implement their own solution using only the
description of the steps in the Vigenere Cipher algorithm.
- After successfully implementing this algorithm Developer should ask
themselves these questions:
- Would you feel confident encrypting your financial information using the
Vigenere Cipher? Why?
- How would you detect that a message had been encrypted using the
Vigenere Cipher?
- How would you go about trying to crack this encryption?
## User Stories
- [ ] User can see the app window with these components:
- Plain text message input field
- Encryption key input field
- Action buttons - 'Encrypt' and 'Decrypt'
- Resulting encrypted or decrypted message
- [ ] User can enter the text to be encrypted in the plain text message input
field
- [ ] User can enter the Encryption key the Vigenere algorithm will use to
encrypt the plain text message.
- [ ] User can click see see the 'Decrypt' button disabled until the plain
text has been encrypted.
- [ ] User can click the 'Encrypt' button to encrypt the plain text message
- [ ] User can see the encrypted message displayed in the result field.
- [ ] User can see the 'Decrypt' button enabled after the encrypted message
has been displayed.
- [ ] User can click the 'Decrypt' button to decrypt the encrypted message
and to display its contents in the result field.
## Bonus features
- [ ] User can see a 'Compare' button after decryption that compares the
original plain text message with the decrypted message
- [ ] User can see an error message if the 'Compare' detects differences
in the contents of these two fields.
## Useful links and resources
- [Bad Actors](http://solutionsreservoir.com/resources/introduction-to-cybersecurity/part-1-cybersecurity-overview)
- [Vigenere Cypher](https://www.geeksforgeeks.org/vigenere-cipher/)
## Example projects
[Vigenere Encryption](https://codepen.io/max1128/pen/VdyJmd)

@ -68,6 +68,7 @@ required to complete them.
| [Slider Design](./Projects/Slider-Design.md) | Display images using a slider control | 1-Beginner |
| [🌟Stopwatch App](./Projects/Stopwatch-App.md) | Count time spent on activities | 1-Beginner |
| [TrueOrFalse](./Projects/True-or-False-App.md) | Identify the result of a conditional comparison | 1-Beginner |
| [🌟Vigenere Cipher](./Projects/Vigenere-Cipher) | Encrypt text using the Vigenere Cypher | 1-Beginner |
| [Wind Chill](./Projects/Windchill-App.md) | Calculate the windchill factor from an actual temperature | 1-Beginner |
| [🌟Word Frequency](./Projects/Word-Frequency-App.md) | Calculate word frequency in a block of text | 1-Beginner |

Loading…
Cancel
Save