Mini Proj Latest
Mini Proj Latest
On
JULY, 2024
i
COMPUTER SCIENCE ENGINEERING (DATA SCIENCE)
Date:
CERTIFICATE
This is to certify that the project work entitled “CRYPTOGRAPHY-ENABLED
PASSWORD MANAGER AND NOTE-KEEPING APPLICATION” work done
BONAGIRI VIVEK REDDY (217Y1A67D0), BOYILLA SIVA MOHITH REDDY
(217Y1A67B9), GOLLA NITHIN (217Y1A6793), NAGESH (217Y1A6791) student(s) of
Department of Computer Science and Engineering (Data Science), is a record of bonafide work
carried out by the member(s) during a period from MAY, 2024 to JULY, 2024 under the
supervision of Mr.RAGHAVENDRA. This project is done as a fulfilment of obtaining
Bachelor of Technology Degree to be awarded by Jawaharlal Nehru Technological University
Hyderabad, Hyderabad.
The matter embodied in this project report has not been submitted by me/us to any other
university for the award of any other degree.
Principal
External Examiner
Dr. R. Murali Prasad
ACKNOWLEDGEMENTS
ii
We would like to express my sincere gratitude to my guide Mr.RAGHAVENDRA, Associate
Professor, CSE (DS), for his/her excellent guidance and invaluable support, which helped me
accomplish the B.Tech degree and prepared me to achieve more life goals in the future. His
total support of my dissertation and countless contributions to my technical and professional
development made for a truly enjoyable and fruitful experience. Special thanks are dedicated
for the discussions we had on almost every working day during my project period and for
reviewing my dissertation.
We wish to express deepest gratitude and thanks to Dr. R. Murali Prasad, Principal,
and Dr. P. Sridhar, Director for their constant support and encouragement in providing all the
facilities in the college to do the project work.
We would also like to thank all our faculties, administrative staff and management of
MLRITM, who helped me to completing the project.
On a more personal note, I thank my beloved parents and friends for their moral
support during the course of our project.
TABLE OF CONTENTS
iii
Page NO.
Certificate ii
Acknowledgements iii
Table of Contents iv
List of Figures vi
List of Abbreviations --
List of Tables --
Abstract vii
Chapter 1 viii-xii
1.1 Introduction viii
1.2 Problem Statement ix
1.2. Challenges ix
1
1.3 Existing System x
1.4 Proposed System x
1.5 Objectives xi
1.5. Outline xi
1
1.6 Idea Behind the Project xii
Chapter 2 xiii-xvi
2.1 Literature Survey xiii
2.2 Overview of the Application xv
2.2. Purpose and Features xv
1
2.3 Splash Screen xv
2.3. create GUI() xv
1 add Image()
2.3. add Text() xvi
2 addProgressBar()
runningPBar()
Chapter 3 xvii-xviii
3.1 Password Management xvii
iv
3.1.1 Methods xvii
get_Acc(Object Account)
add_Acc(Object Account, Object passwd)
Conclusion xxxv
References xxxvi
v
LIST OF FIGURES
Figure No. Name of the Figure Page No.
Figure 1.1 the application screen xxvi
Figure 1.2 generate password xxvi
Figure 1.3 input password length xxvii
Figure 1.4 generated password xxvii
Figure 1.5 encrypt text xxviii
Figure 1.6 secret/cypher key for encryption xxviii
Figure 1.7 Encrypted text passcode xxviii
Figure 1.8 text to decrypt xxix
Figure 1.9 secret/cypher key xxix
Figure 2.1 Decrypted text xxx
Figure 2.2 Store passwords for accounts xxx
Figure 2.3 Enter account name xxx
Figure 2.4 retrieved password for account name xxxi
Figure 2.5 enter account name to delete password xxxi
Figure 2.6 Password deleted xxxii
Figure 2.7 Add note xxxiii
Figure 2.8 Note added xxxiii
Figure 2.9 retrieve notes xxxiv
vi
ABSTRACT
A critical component of the application is the CryptoUtil class, which facilitates the encryption
and decryption of passwords using a secret key. This ensures that passwords are stored in a
secure format, protecting them from unauthorized access and enabling their safe retrieval when
needed.
The user interface is provided by the PasswordManager class, which integrates all
functionalities into a single, intuitive graphical user interface (GUI). Through this interface,
users can generate new passwords, encrypt and decrypt existing passwords, search for and
delete passwords, and manage related notes.
The application initializes through its main method, which displays the splash screen and
subsequently launches the password manager interface. This approach ensures a smooth
transition from the initial loading phase to the main functionality of the application.
In summary, this Java application combines security, functionality, and ease of use to provide a
comprehensive tool for managing passwords and sensitive information, making it a valuable
asset for users seeking to enhance their digital security.
vii
CHAPTER 1
1.1 INTRODUCTION
In the digital age, the importance of secure password management cannot be overstated.
As users navigate a multitude of online services, they are frequently required to create and
manage complex passwords to safeguard their personal and professional information.
Recognizing this need, the Java Password Management Application offers a robust solution for
storing, organizing, and protecting passwords in a secure and user-friendly manner.
This application is designed to address the common challenges associated with password
management, including the creation of strong passwords, the secure storage of sensitive data,
and the ease of access when needed. By leveraging advanced encryption techniques and
providing a straightforward graphical user interface (GUI), the application ensures that users
can maintain their credentials with both security and convenience.
The core functionality of the application revolves around the `HashtablePassword` class, which
allows for the secure handling of passwords through a custom hash table implementation. This
ensures that passwords are not only stored safely but can also be efficiently managed.
Additionally, the `CryptoUtil` class plays a pivotal role in encrypting and decrypting
passwords, providing an extra layer of security to protect against unauthorized access.
To further enhance user experience, the `PasswordGenerator` class is included to assist users in
creating strong and random passwords, tailored to meet specific security requirements. The user
interface, implemented in the `PasswordManager` class, integrates all features into an
accessible and intuitive platform, allowing users to perform essential tasks such as generating,
storing, and retrieving passwords with ease.
viii
1.2.1 CHALLENGES
Developing a Password and Notes Manager involves several challenges. Implementing a splash
screen without freezing the UI requires proper thread management, avoiding `Thread.sleep()` in
favor of a `Swing Timer`. Handling collisions in a hashtable demands accurate linear and
quadratic probing and thorough testing. Ensuring secure cryptography and managing
exceptions, along with generating strong passwords using `SecureRandom` and a mix of
character types, is crucial. Validating user inputs for storing, retrieving, and deleting
passwords, and efficiently managing an increasing number of notes, possibly with a scalable
data structure or database, is essential. Ensuring thread safety with shared resources involves
implementing synchronization mechanisms. Designing a responsive and intuitive GUI requires
effective layout managers and appropriate component sizing. Additionally, robust error
handling and logging are necessary for a reliable application.
1. Password Storage:
Storage Method: Passwords and account details are typically stored in plain text or in an
unsecured manner.
Data Retrieval: Users must manually search through stored data to retrieve passwords.
User Interface: Basic UI, likely console-based or with minimal GUI elements.
2. Features:
Login System: A basic login system with hardcoded credentials or stored in an unsecured
manner.
No Encryption: Passwords and notes are not encrypted, making them vulnerable to
unauthorized access.
No Automated Backup: Lack of automated backup for stored passwords and notes.
No Advanced Features: Absence of features like password strength validation, secure password
generation, and encryption/decryption of notes and passwords.
Limited Error Handling: Basic error handling with minimal feedback to the user.
ix
3. Technologies Used:
Database: Basic file storage or simple database systems like SQLite without encryption.
User Interface: Command-line interface or basic HTML forms with minimal styling and
interaction.
1. Password Storage:
Storage Method: Passwords are stored in a hash table using linear probing for efficient retrieval
and management.
Data Retrieval: Users can easily search for stored passwords using account names.
User Interface: Modern GUI using Java Swing, providing a more interactive and user-friendly
experience.
Note Management: Notes are stored in an organized manner and can be retrieved as needed.
2. Features:
Encryption: Encrypted storage of passwords and notes using strong encryption algorithms.
x
Enhanced User Experience: Better error handling, user prompts, and interactive dialogs.
Modern UI: Attractive and responsive user interface with buttons, text areas, and progress bars.
3. Technologies Used:
Database: In-memory data structure (hash table) for quick access and management.
User Interface: Java Swing for building a rich graphical user interface.
1.5 OBJECTIVES
The objectives of developing a Password and Notes Manager include creating a secure and
user-friendly application for managing sensitive information. This involves implementing a
splash screen that initializes without freezing the UI, ensuring efficient and secure storage of
passwords using cryptographic techniques, and handling potential collisions in the hashtable
with effective probing methods. The application should support robust password generation,
validation, and user input handling. It must also efficiently manage an increasing number of
notes, ensuring scalability and performance. Thread safety is paramount, requiring
synchronization mechanisms for shared resources. Additionally, designing an intuitive and
responsive GUI is essential, along with implementing comprehensive error handling and
logging to ensure reliability and user trust.
1.5.1 OUTLINE
The Password and Notes Manager involves initially designing the system architecture to ensure
scalability and security, followed by implementing a splash screen with asynchronous loading
to maintain UI responsiveness. Next, a robust password storage mechanism will be created,
utilizing cryptographic techniques and handling potential hash collisions through effective
probing methods. The application will include features for secure password generation,
validation, and user input handling. Simultaneously, the notes management module will be
developed to handle scalability and performance concerns. Thread safety will be addressed with
appropriate synchronization techniques for shared resources. The project will also focus on
creating an intuitive and responsive GUI, along with comprehensive error handling and logging
to ensure reliability and enhance user trust. Regular testing and user feedback will be
incorporated throughout the development process to refine and improve the application.
xi
The Password and Notes Manager project is to create a secure, user-friendly application that
helps individuals manage their digital credentials and personal notes efficiently. In today's
digital age, people have numerous online accounts, each requiring strong and unique
passwords. Remembering these passwords can be a daunting task, leading to the common
practice of reusing passwords across multiple sites, which poses significant security risks. This
project aims to address this issue by providing a secure storage solution for passwords, utilizing
advanced cryptographic techniques to ensure the highest level of security. Additionally, the
application will offer a built-in password generator to create strong, unique passwords for each
account, further enhancing the user's online security.
Another crucial aspect of the project is the notes management feature. People often have
important information that needs to be stored securely yet remain easily accessible. This can
include personal notes, sensitive information, or even ideas that need to be jotted down quickly.
Integrating a secure notes feature within the password manager adds significant value to the
application, making it a comprehensive solution for managing both passwords and personal
data. The notes module will be designed to handle scalability and performance efficiently,
ensuring that users can store and retrieve their information quickly and securely.
The project also emphasizes creating an intuitive and responsive user interface (UI) to ensure a
seamless user experience. A well-designed UI is essential for encouraging adoption and regular
use of the application. The application will include features like a splash screen with
asynchronous loading, ensuring that the user interface remains responsive even when
performing background operations. Thread safety, error handling, and logging will be integral
parts of the development process to ensure the application is reliable and trustworthy. Regular
testing and user feedback will be incorporated to continuously refine and improve the
application, ensuring it meets the needs and expectations of its users.
xii
CHAPTER 2
2.1 LITERATURE SURVEY
Key Relevance to
Reference Description
Findings/Contributions Project
Provides
Oracle. (2021). foundational
Documentation on Explains the
Java knowledge for
Java's built-in architecture and usage
Cryptography implementing
cryptography of cryptographic
Architecture (JCA) cryptographic
framework algorithms in Java
Reference Guide functions in the
application
Enhances the
Bouncy Castle. A third-party Extensive support for
cryptographic
(2021). Bouncy library offering a encryption,
capabilities of the
Castle wide range of decryption, and secure
application
Cryptography cryptographic random number
beyond Java's
Library functions generation
built-in libraries
Useful for
Oracle. (2021).
securing data
Java Secure Guide on using Details protocols and
transmission
Sockets Extension JSSE for secure mechanisms for secure
between client
(JSSE) Reference communications socket communication
and server
Guide
components
xiii
Essential for
Information on
Covers key storage, secure storage of
Oracle. (2021). using Java
retrieval, and cryptographic
Java KeyStore KeyStore for key
management practices keys within the
management
application
Supports
Apache Software Library for Provides utilities for
encoding
Foundation. encoding and encoding/decoding
requirements for
(2021). Apache decoding various data using Base64,
secure data
Commons Codec formats Hex, etc.
handling
OWASP
Foundation. Guides the
Report on the most Identifies and explains
(2021). OWASP security best
common security common
Top Ten: The Ten practices to be
risks in web vulnerabilities and
Most Critical Web followed in the
applications mitigation strategies
Application application
Security Risks
xiv
Oracle. (2020). Covers secure coding Ensures that the
Guidelines and best
Java Security: techniques and application's code
practices for secure
Writing Secure common security adheres to high
Java programming
Java Applications pitfalls security standards
The Password and Notes Manager application is crafted to offer a secure and convenient
solution for managing sensitive information, such as passwords and personal notes. It employs
advanced encryption techniques and secure authentication methods, including biometric and
multi-factor authentication, to ensure robust data protection. The user-friendly interface
supports seamless navigation and interaction, making it accessible even to those with minimal
technical skills. Additionally, the application includes organizational tools for categorizing and
searching information, and it is compatible across desktop and mobile platforms for access
from anywhere. Ultimately, the application aims to provide a balanced approach to security and
usability, addressing the need for both protection and ease of management.
The purpose of the Password and Notes Manager application is to simplify the secure
management of sensitive information, ensuring that users can store and access their passwords
and notes safely. Key features include robust encryption for data protection, user-friendly
interfaces for ease of use, and multi-platform compatibility to enable access from both desktop
and mobile devices. It offers functionalities such as password generation, secure storage, and
retrieval of passwords, alongside note-taking capabilities. The application also supports
organizational tools like categories and search functions, enhancing user efficiency in
managing their information.
The Splash Screen serves as an introductory visual for the Password and Notes Manager
application, enhancing the initial user experience with a professional touch. Upon launching the
application, users are greeted with a visually appealing screen featuring a company logo and a
progress bar. This screen not only presents a brief message about the application's purpose but
also provides a visual indication of the loading progress. The use of vibrant colours and a
prominent logo ensures that the splash screen captures attention and communicates a sense of
professionalism and readiness.
xv
In addition to its aesthetic role, the splash screen plays a functional part by managing user
expectations during the application's startup phase. It provides feedback on the application's
loading status, helping users understand that the application is initializing. By displaying a
progress bar that gradually fills, the splash screen reassures users that the system is actively
working and will be ready soon, improving the overall user experience by reducing perceived
wait times and enhancing the smooth transition into the main application interface.
Create GUI(): The `create GUI()` function is responsible for designing and initializing the
graphical user interface of the Password and Notes Manager application. This function sets up
the layout, including the placement of buttons, text fields, and other interactive elements,
ensuring that the interface is user-friendly and intuitive. It organizes the various components
into a cohesive and visually appealing design, making it easy for users to navigate through the
application. By defining the structure and functionality of the interface, `create GUI()` ensures
that the application is both accessible and efficient for users.
Add Image(): The `add Image()` function enhances the visual appeal of the application by
incorporating graphical elements such as logos, icons, or background images. This function is
responsible for loading and positioning images within the application's interface, ensuring that
they align well with the overall design. By including high-quality images, `add Image()` not
only improves the aesthetic quality of the application but also helps in reinforcing brand
identity and making the user experience more engaging and enjoyable.
Add Text(): The `add Text()` function is crucial for integrating textual information into the
application, such as labels, instructions, and other essential content. This function ensures that
text elements are properly positioned, formatted, and aligned within the user interface to
provide clear and concise information to users. By managing the text's appearance and
placement, `add Text()` contributes to a more intuitive and user-friendly experience, helping
users understand the application's features and functionalities effectively.
Add ProgressBar():The `add ProgressBar()` function incorporates a progress bar into the
application’s interface, providing users with visual feedback on ongoing processes or tasks.
This function initializes and configures the progress bar, allowing it to display the progress of
operations such as data loading or file processing. By including a progress bar, `add
ProgressBar()` enhances user experience by offering real-time updates and managing user
expectations during lengthy operations.
xvi
CHAPTER 3
3.1 Password Management
It is a critical component of any application that requires user authentication. It involves the
secure handling of user passwords, including their creation, storage, and verification. Effective
password management ensures that passwords are stored in a hashed and salted format to
protect against unauthorized access and potential breaches. This approach reduces the risk of
passwords being exposed or compromised, thereby safeguarding user accounts and maintaining
the overall security of the application.
3.1.1 Methods
get_Acc(Object Account) , add_Acc(Object Account, Object passwd)
add_Acc(Object Account, Object passwd) - is a function that facilitates the addition of a new
user account into the system. By accepting an `Account` object and a `passwd` object, this
function securely stores the provided account details and password in the system's database. It
xvii
typically includes processes for hashing and salting the password to enhance security before
storing it. This function is essential for user onboarding, allowing new users to create accounts
and access the application while ensuring their credentials are securely handled.
Furthermore, modern password generation tools often incorporate user-defined criteria and
randomness to create passwords tailored to specific security requirements. These tools may also
include features like password length adjustment and the exclusion of easily guessable patterns
or commonly used passwords. The goal is to ensure that each generated password is robust
enough to withstand various forms of cyber-attacks, while also being memorable or
manageable for the user. By leveraging these advanced password generation techniques,
organizations can improve their overall security posture and reduce the risk of unauthorized
access to critical systems and data.
xviii
CHAPTER 4
In addition to basic management features, the Password Manager GUI usually incorporates
advanced security measures to protect sensitive information. This may involve integrating
encryption indicators, secure login methods, and real-time alerts for unauthorized access
attempts. Visual elements like icons and color-coded notifications help users easily identify the
status of their accounts and security settings. Overall, the GUI is designed to balance
functionality with security, ensuring users have a seamless and safe experience while managing
their passwords and sensitive data.
Hardware Requirements
1. Processor
Intel i5 or equivalent AMD processor (minimum)
Intel i7 or equivalent AMD processor (recommended)
2. Memory (RAM)
8 GB RAM (minimum)
16 GB RAM (recommended)
3. Storage
100 GB free disk space (minimum)
256 GB SSD (recommended)
4. Network
Reliable internet connection for downloading dependencies and database operations
5. Other Hardware
Standard keyboard and mouse
Monitor with at least 1920x1080 resolution
xxi
4.4 Source Code
xxii
xxiii
Contd…
xxiv
4.5 UML Diagrams
1. CryptoUtils:
o This class handles cryptographic operations such as encryption, decryption, and
key generation.
o Methods:
encrypt(String text, String key): String - Encrypts the given text using
the provided key.
decrypt(String text, String key): String - Decrypts the given text using
the provided key.
generateKey(): String - Generates a new encryption key.
2. PasswordManager:
o This class handles password storage and retrieval operations.
o Methods:
storePassword(String username, String password): void - Stores the
encrypted password for the given username in the database.
retrievePassword(String username): String - Retrieves and decrypts the
password for the given username from the database.
3. DatabaseManager:
o This class manages database connections.
o Methods:
getConnection(): Connection - Establishes and returns a connection to
the database.
4. UserInterface:
o This class represents the main entry point of the application.
o Methods:
main(String[] args): void - The main method to run the application,
likely providing a console or GUI interface for user interaction.
xxv
xxvi
4.6 Output Images
xxvii
Fig 1.3 input Fig 1.4 generated
password length password
xxviii
Fig 1.5 encrypt text Fig 1.6 secret/cypher key
for encryption
xxix
Fig 1.8 text to decrypt Fig 1.9 secret/cypher key
xxx
Fig 2.1 Decrypted text Fig 2.2 Store passwords
for accounts
xxxi
Fig 2.3 Enter account
name
xxxiii
Fig 2.7 Add note
xxxiv
Fig 2.9 retrieve notes
xxxv
CONCLUSION
The Cryptography Enabled Password Manager and Note Keeping Application developed in this
project provides a comprehensive solution for securely generating, encrypting, storing,
retrieving, and managing passwords and notes. With a user-friendly interface built using
Tkinter, the application ensures ease of use while maintaining robust security features. The
integration of password encryption ensures that user passwords are stored securely, reducing
the risk of unauthorized access. Additionally, the implementation of a splash screen enhances
the user experience by providing a visually appealing start to the application.
Thorough testing of the application across various scenarios, including password generation,
encryption, storage, retrieval, and deletion, as well as note management, demonstrates its
reliability and robustness. By addressing edge cases and ensuring proper error handling, the
application is designed to handle unexpected inputs and invalid operations gracefully. Overall,
this project showcases a well-rounded and secure solution for managing passwords and notes,
catering to the needs of users who seek both security and convenience in their digital
interactions.
REFERENCE
1. Cryptography Concepts
o Stinson, D. R. (2006). Cryptography: Theory and Practice. 3rd Edition. CRC
Press.
o Katz, J., & Lindell, Y. (2014). Introduction to Modern Cryptography:
Principles and Protocols. 2nd Edition. Chapman and Hall/CRC.
2. Password Management Best Practices
o G. J. Simmons, “The Prisoners’ Problem and the Subliminal Channel,” Lecture
Notes in Computer Science, vol. 453, pp. 51-60, 1990.
o “Password Management: Best Practices for Protecting Your Passwords,”
National Cyber Security Centre. Retrieved from NCSC
3. Security Principles in Software Development
o Howard, M., & LeBlanc, D. (2003). Writing Secure Code. 2nd Edition.
Microsoft Press.
xxxvii