a. Describe the role of Operating Systems (OS) and its different subsystems in controlling computer hardware
b. Demonstrate competency in the use of a command line interface to operate and perform simple OS administration
c. Apply principles of abstraction and problem solving in an object-oriented programming language
d. Apply knowledge of programming constructs in developing computer programs
e. Create programs based on incremental development processes of designing, coding, testing and debugging.
A password manager is a software application that is used to store and manage the passwords that a user has for various online accounts and security features. Password managers store the passwords in an encrypted format and provide secure access to all the password information with the help of a master password. In this assignment the students shall code programs for few of the functions of password manager for eg. Password verification, encryption, validation etc. based on incremental development processes of designing, coding, testing and debugging.
The program will create a PWManager , that will manage a set of passwords for an individual.
PWManager: The PWManager will store the encrypted passwords (a string) in a dictionary form. Every password in the dictionary will be stored along with the purpose for eg. Gmail password:
ER%$TDFR. The passwords will not be stored in plain text unencrypted! The PWManager has to perform following functions:
1. Read and VerifyPassword: this takes a string (a password) and returns true if it meets the following criteria:
• it is at least 10 characters’ long
• string contains MIT
• it contains at least one digit
• it contains at least one of these four characters: # ? , ! Otherwise it returns false.
2. Encrypt: this takes a password (a string) and returns the encrypted form of the password. Note: there is no decrypt function (there is no need to decrypt passwords). Simple substitution cipher algorithms may be used(http://practicalcryptography.com/ciphers/simple-substitution-cipher/)
3. Display the original passwords and the encrypted passwords along with the purpose/application where the password is being used. (Hint: to display the original passwords, the encrypted password stored in the dictionary may be decrypted)
4. setNewPassword: takes a string (a proposed password). If it meets the criteria in verifyPassword, it encrypts the password and stores it in the member variable and returns true. Otherwise returns false.
5. ValidatePassword: takes a string (a password) and returns true if, once encrypted, it matches the encrypted string stored in the member variable. Else returns false.
The assignment report has to include the following sections:
1. User Requirements:
a. Include all the user (assignment) requirements here.
b. For example: the requirements of a password, key to encrypt, encryption method, etc...
Analysis often requires the programmer to learn some things about the problem domain and hat information the user will have to provide. Also, it should specify what the program is going to do. In this case the problem domain would be the logic used to verify, encrypt and validate
The design phase has to describe how the program is going to do the desired task. This usually involves writing an algorithm or a flow chart in fact, algorithms are more often written in a somewhat stylized version of English called pseudocode.
Although there are no precise rules governing the syntax of pseudocode, in your pseudocode you should strive to describe the essential elements of the program in a clear and concise manner. Note that this pseudocode closely resembles Python code, so the transition to the
coding step should be straightforward.
4. Implementation Phase:
In this phase the complete code in python without any syntax and semantic errors must be completed. The complete code with proper indentation has to be pasted here along with sample inputs and outputs.
5. Testing: Only thorough testing can build confidence that a program is working correctly.
Testing is a deliberate process that requires some planning and discipline on the programmer’s part. It would be much easier to turn the program in after the first successful run to meet a deadline or to move on to the next assignment. But your grade, your job, or people’s lives might be affected by the slipshod testing of software.
Once all the errors are debugged, set of all possible inputs are to be provided. Even though the range of the input numbers on a computer is finite, testing all of the possible combinations of inputs would be impractical. So, the challenge is to find a smaller set of inputs, called a test
suite, from which we can conclude that the program will likely be correct for all inputs. The number and type of input samples have to cover all possible cases of validity checks of encryption and decryption.