container independent secure data communication
DESCRIPTION
Data Security Authentication(DSA) is way to transfer the confindential file to required person in a safe and secure maner without getting into hands of hackers who are major threat in Computer technology.The aim is to provide maximum security to the confidential data.The phenomenal growth in e-commerce applications through the Internet in the past few years has led to a genuine need, as well as a sense of urgency, for both small office and home office and corporate users to protect their data transactions through the Internet. These data transactions may include sensitive document transfer, digital signature authentication, digital watermarking for copyright protection, and digital data storage and linkage.In this project we create a CRC file by adding the checksum value to the confidential data,then it is compressed so that it gets encrypted,the compressed file is embedded to container file along with secret key so that original features of the container file doesn’t changes.the receiver cans de-embbed the data from container file only when he matches the key.then in file is decompressed to get the original data.The usage of less number of resource boost up performance and reliability of this system.This system can be implemented in many various fields like banks,security related organizations whose data is to be very confidential.TRANSCRIPT
ABSTRACT
Data Security Authentication(DSA) is way to transfer the confindential file to required
person in a safe and secure maner without getting into hands of hackers who are major threat in
Computer technology.The aim is to provide maximum security to the confidential data.
The phenomenal growth in e-commerce applications through the Internet in the past few
years has led to a genuine need, as well as a sense of urgency, for both small office and home
office and corporate users to protect their data transactions through the Internet. These data
transactions may include sensitive document transfer, digital signature authentication, digital
watermarking for copyright protection, and digital data storage and linkage.
In this project we create a CRC file by adding the checksum value to the confidential
data,then it is compressed so that it gets encrypted,the compressed file is embedded to container
file along with secret key so that original features of the container file doesn’t changes.the
receiver cans de-embbed the data from container file only when he matches the key.then in file is
decompressed to get the original data.The usage of less number of resource boost up
performance and reliability of this system.
This system can be implemented in many various fields like banks,security related
organizations whose data is to be very confidential.
ABBREVIATIONS
CRC:Cyclic redundance check
DSA:Data Security Authentication
GUI:Graphical User Interface
C O N T E N T S
S.No Topic Page no
1. Organization Profile
2. Introduction
2.1 About the Project
2.2 Project Description
3. System Analysis
3.1 Existing System
3.2 Proposed System
3.3 Requirement Analysis
3.4 Requirement Specification
3.5 Feasibility Study
4. System Design
4.1 Project Modules
4.2 Data Flow Diagrams
4.3 E-R diagrams
4.4 UML Diagrams
4.5 Hardware and Software Requirements
5. Output Screens
6. Source Code
7. Software Testing
8. Technical notes
9. Conclusion
References
LIST OF FIGURES
FIGURES PAGE NO
1.1 DFD Diagram Level-11.2 DFD Diagram Level-21.3 E-R Diagram for System
LIST OF UML DIAGRAMS
FIGURES PAGE NO
1.1 Use Case Diagram1.2 Sequence Diagram1.3 Activity Diagram1.4 Class Diagram
1. ORGANIZATION PROFILE
‘Adroit Infocom’ is a professional Web design and software development company. We
supply services of web design & development, web application, Flash animation, multimedia,
identity and graphic design, Website translation, internet marketing and software services.
We help clients enhance their competitiveness and produce measurable results based on
features delivered, value delivered and time saved. The combination of thorough process,
comprehensive experience and expansive creative vision enables us to create solutions that are
innovative, usable and reliable for website designing.we have proven our skill, professionalism,
and creativity in all of our work.
Adroit Infocom has proven expertise in encompassing low cost, but high quality and
reliable web development services in areas like e-commerce, e-learning, finance, manufacturing,
content management and many others.
The strength of Adroit Infocom lies in its management and outstanding model of project
execution that makes it possible for the timely delivery of the most complicated and advanced
software and IT solutions to the clients. Supported by a talented pool of experienced software
engineers from the top reputed Technical and Research Institutes in the country, Adroit Infocom
offers you dedicated service at all stages of the project-right from the initial specification to the
final delivery and maintenance, with a round the clock support.
Adroit Infocom firmly believes in directing the clients to increase their business output
through the application of the latest web tools and a careful handling of the changing dynamics
of website development. Adroit Infocom delivers quality service that serves as an eye opener for
the customers to conduct business more creatively and effectively. We balance project duration
and product development efforts to suit your business needs.
2. INTRODUCTION
2.1 ABOUT THE PROJECT:
DSA is a graphical interface in which the user handles the transaction of compression by
selecting a source file that is to be embedded. The compressed file that is obtained is of reduced
size and is embedded into a container (image source etc.,) without losing the features of that
container. The container can be transferred to the respective destination where the reverse of the
process is performed like de-embedding the content from the container and decompressing it to
generate the actual code (decompressed data).
As the application is container independent various type of files are used for embedding the data
into them.
2.2 PROJECT DESCRIPTION:
The application that is proposed contains the following features :
Generates a CRC file by placing checksum value from a user specified file.
Compresses the specified file into a binary mode object.
Embeds the compressed content into the specified container without disturbing its
features.
De-Embeds the container to separate the element from the container making the
compressed text independent.
Decompress the obtained content to retrieve its normal format.
Checks the retrived file whether it is corrupted or not.
3. SYSTEM ANALYSIS
System analysis first stage according to System Development life cycle model. This
system analysis is a process that starts with the analyst.
Analysis is a detailed study of the various operations by a system and their relationships
within and outside the system. One aspect of analysis is defining the boundaries of the system
and determining whether or not a candidate should consider other related systems. During
analysis, data is collected from the available files, decision points, and transactions handled by
the present system.
Logical system models and tools are used in analysis.Training, experience, and common
sense is required for the collection of the information needed to do analysis.
3.1 EXISTING SYSTEM
In the current existing model there are many algorithms that help in monitoring the data
transfer in an encrypted model but are container dependent. Laptop computers have become
mobile stores of massive amounts of information. Add to that the proliferation of removable hard
drives, and it becomes crystal clear how much sensitive data is on the move in the world, most of
it woefully underprotected. There are several levels of encryption available, and the major
difference them is the complexity of the encryption. Simply put, the more complicated the
encryption scheme, the more secure your data will be. However, before selecting the most
complex, most secure encryption scheme available, you should take into account another factor
the processing power needed to encrypt or decrypt the data. More complexity means more
security, but it also equals more demands on hardware.
Until recently, an inexpensive, easy-to-use, reliable drive-encryption utility was hard to come
by. Either the tools available were too complex or expensive to be used by a nontechnical
individual, or they impacted performance so severely that the PC slowed to a crawl.
This includes many drawbacks such as:
Limited access of security to the user data.
Container dependency locks the user from taking various containers.
It can easily capture the compressed data because of limited container.
3.2 PROPOSED SYSTEM
Proposed system is the upgraded form of existing system with the advanced technologies
making a container independent which allows the user to generate the CRC file from the
specified file by placing checksum value,it then compress the file size which convert the file to
binary mode object.we choose the required container for embedding the compressed data along
with user defined key.we can retrieve the original file from the container file and check whether
the file is corrupted or not.
Can work with any container not only images.
Size of data not a constraint to the size of the container.
Works even with animated, audio, video or any type of container.
The data hidden can also be compressed to ensure that even when present inside the
container it is still unreadable.
Authentication of data to verify data integrity
3.3 REQUIREMENTS ANALYSIS
The requirement phase basically consists of three activities:
1. Requirement Analysis
2. Requirement Specification
3. Requirement Validation
3.3.1 REQUIREMENT ANALYSIS:
Requirement analysis is a software engineering task that bridges the gap between system
level software allocation and software design. It provides the system engineer to specify software
function and performance indicate software’s interface with the other system elements and
establish constraints that software must meet.
The basic aim of this stage is to obtain a clear picture of the needs and requirements of
the end-user and also the organization. Analysis involves interaction between the clients and the
analsysis.usually analysts research a problem from any questions asked and reading existing
documents. The analysts research a problem from any questions asked and reading existing
documents. The analysts have to uncover the real needs of the user even if they don’t know them
clearly. During analysis it is essential that a complete and consistent set of specifications emerge
for the system. Here it is essential to resolve the contradictions that could emerge from
information got from various parties.
This is essential to ensure that the final specifications are consistent.
It may be divided into 5 areas of effort.
1. Problem recognition
2. Evaluation and synthesis
3. Modeling
4. Specification review
Each requirement analysis method has a unique point of view. However all analysis methods are
related by a set of operational principles.
The operational principles are,
The information domain of the problem must be understood.
The functions that the software is to perform must be defined.
The behavior of the software as a consequence of external events must be defined.
The models that depict information function and behavior must be portioned in a
hierarchical or layered fashion.
The analysis process must move from essential information to implementation detail.
3.4 REQIREMENT SPECIFICATION:
3.4.1 SPECIFICATION PRINCIPLES:
Software requirements specification plays an important role in creating quality software
solutions. Specification is basically a representation process.requirments are represented in a
manner that ultimately leads to a successful software implementation.
Requirements may be specified in a variety of ways. However there are some guidelines worth
following:-
representation format and content should be relevant to the problem
Information contained within specification should be nested
Diagrams and other notational forms should be restricted in number and consistent in
use.
Representations should be revisable.
3.4.2 SOFTWARE REQUIREMENTS SPECIFICATIONS:
The software requirements specification is produced at the culmination of the analysis
task. The function and performance allocated to the software as a part of system engineering are
refined by establishing a complete information description, a detailed functional and behavioral
description, and indication of performance requirements and design constraints, appropriate
validation criteria and other data pertinent to requirements.
An outline of the software requirements specification:
A simplified outline can be given for the framework of the specifications. This is
according to IEEE standards.
3.5 FEASIBILITY STUDY:
All projects are feasible, given unlimited resources and infinite time. But the
development of software is plagued by the scarcity of resources and difficult delivery rates. It is
both necessary and prudent to evaluate the feasibility of a project at the earliest possible time.
Three key considerations are involved in the feasibility analysis.
3.5.1 ECONOMIC FEASIBILITY:
This procedure is it determines the benefits and savings that are expected from a
candidate system and compare them with costs. If benefits outweigh costs, then the decision is
made to design and implement the system. Otherwise, further justification or alterations in
proposed system will have to be made if it is to have a chance of being approved. This is an
ongoing effort that improves in accuracy at each phase of the system life cycle
.
3.5.2 TECHNICAL FEASIBILITY:
Technical feasibility centers in the existing computer system (hardware, software, etc.,)
and to what extent it can support the proposed addition. If the budget is serious constraint then
the project is judged not feasible.
3.5.3 OPERATIONAL FEASIBILITY:
People are inherently resistant to change, and computers have been known to facilitate
change. It is understanndle that the introduction of a candidate system requires special effort to
educate, sell, a and train the staff on new ways of conducting business.
4.SYSTEM DESIGN
The most creative and challenging phase of the life cycle is system design. The term
design describes a final system and the process by which it is developed. It refers to the technical
specifications that will be applied in implementations of the candidate system. The design may
be defined as “The process of applying various techniques and principles for the purpose of
defining a device, a process or a system with sufficient details to permit its physical realization”.
The designers goal is how the output is to be produced and in what format. Samples of
the output and input are also presented. Second input data and database files have to be designed
to meet the requirements of the proposed output. The processing phases are handled through the
program construction and testing.Finally, details are related to justification of the system and an
estimate of the impact of the candidate system on the user and the organization are documented
and evaluated by management as a step toward implementation.
The importance so software design can be stated in a single word”quality”.design
provides us with representations of software that can be assessed for quality. Design is the only
way where we can accurately translate a customer’s requirements into a complete software
product or system
4.1 PROJECT MODULES
4.1.1 Login & Security
The system restricts usage of the package only to authorized user. The module provides a
login security restriction and check across the database for user validation. The user can change
the password whenever required.
4.1.2 CRC Generation & Verification
This module deals with providing data authentication. At the senders end CRC32 is used
to create checksum. The created checksum is then appended to the source text file and sent as
input to compression. At the receivers end after decompression the crc is compute once again
and compared with the checksum sent. If there is a match the file has not been damaged or
corrupted in the process of transmission.
4.1.3 Compression & decompression
The module provides additional security by converting the input text file into unreadable
binary output. The junk data looks more like encrypted data. This is performed by using the
java’s util package. The class GZip is used to compress and decompress the data. The junk or
compressed data is passed as input to steganography.
4.1.4 Data Embed & Retrieve
This module deals with identifying the data and a container to embed. The embedded
container can then be transmitted. The located data is the compressed data from the compression
module. The junk data is appended to the end of the container neither in such a way that the data
does not corrupt the container nor vice versa. The size of the data to that of the container is also
not a constraint. While retrieving the data, the junk data is converted back to ascii text using
decompression after de-embedding the data from the container.
4.2 DATA FLOW DIAGRAMS
A data flow diagram is graphical tool used to describe and analyze movement of data
through a system. These are the central tool and the basis from which the other components are
developed. The transformation of data from input to output, through processed, may be
described logically and independently of physical components associated with the system. These
are known as the logical data flow diagrams. Each component in a DFD is labeled with a
descriptive name. Process is further identified with a number that will be used for identification
purpose single process bit, which plays vital role in studying the current system.
A DFD is also known as a “bubble Chart” has the purpose of clarifying system
requirements and identifying major transformations that will become programs in system design.
So it is the starting point of the design to the lowest level of detail. A DFD consists of a series of
bubbles joined by data flows in the system.
4.2.1 DFD SYMBOLS
In the DFD, there are four symbols
1. A square defines a source(originator) or destination of system data
2. An arrow identifies data flow. It is the pipeline through which the information flows
3. A circle or a bubble represents a process that transforms incoming data flow into
outgoing data flows.
4. An open rectangle is a data store, data at rest or a temporary repository of data
Process that transforms data flow.
Source or Destination of data
Data flow
Data Store
DFD LEVEL-1
Request for Login
Authenticated
DFD LEVEL-II
Open channel
Communication
ADMINSTRATOR
Data Key
Container file
Embedding
De-Compression
Compression
De-Embedding
CRC-Generation
DSA
Confidential file
Data Key
CRC-Verification
Confidential file
ER Diagram
Login
CRC-Verification
Username
Embedding
De-Embedding
Compression
CRC-Generation
Password
De-Compression
ADMINSTRATOR DSA
4.4 Uml diagram
4.4.1 Usecase Diagram
USER
Login
CRC-Generation
Compression
Embedding
De-Embedding
De-Compressing
CRC-Verification
System
4.4.2 Sequence Diagram
USERUSER DSADSA SYSTEMSYSTEM
1: User Login Request
2: Prompt for Username & Password
3: Enter Username & Password
4: Verify
5: Return Status(Success/Failure)
6: Load Modules(Success)
7: Report Error Message(Failure)
4.4.3 Class Diagram
CRC-Verification
crcfile
crc32()
Login
Unamepwd
verify()
CRC-Generation
inputfile
crc32()
Compression
crc file
gzip()
Embedding
compressed filecontainer filedatakey
embed()
De-Embedding
embedded filedatakey
deembed()
De-Compression
compressed file
gunzip()
4.5 HARDWARE AND SOFTWARE REQUIRMENTS
4.5.1 HARDWARE REQUIREMENTS
Processor : Intel P-IV based system
Processor speed : 250MHz to 833MHz
RAM : 512 Mb
Hard Disk : 2GB to 30GB
4.5.2 SOFTWARE REQUIREMENTS
Language : Java (Swings)
Operating System :Windows2000
5.OUTPUT SCREENS
6.SOURCE CODE
6.1 Source code for Login:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
class Login extends JFrame implements ActionListener
{
JLabel l1,l2;
JTextField t1;
JPasswordField t2;
JButton jb1,jb2;
public Login(String str)
{
super(str);
Container con=getContentPane();
con.setLayout(null);
Font f=new Font("Times New Roman",Font.BOLD,16);
l1=new JLabel("UserName : ");
l2=new JLabel("PassWord : ");
l1.setFont(f);
l2.setFont(f);
t1=new JTextField();
t2=new JPasswordField();
jb1=new JButton("LOGIN");
jb2=new JButton("EXIT");
l1.setBounds(50,30,120,20);
l2.setBounds(50,70,120,20);
t1.setBounds(135,32,140,20);
t2.setBounds(135,72,140,20);
jb1.setBounds(70,110,80,20);
jb2.setBounds(160,110,80,20);
con.add(l1);
con.add(l2);
con.add(t1);
con.add(t2);
con.add(jb1);
con.add(jb2);
jb1.addActionListener(this);
jb2.addActionListener(this);
}
public void actionPerformed(ActionEvent ae)
{
String str=ae.getActionCommand();
if(str.equals("EXIT"))
{
JOptionPane.showMessageDialog(this,"Thank U for Using the Application...");
System.exit(0);
}
else
{
String x=t1.getText().trim();
String y=t2.getText().trim();
if(x.length()!=0)
{
if(y.length()!=0)
{
try
{
FileInputStream f1=new FileInputStream("LoginInfo.txt");
int x1=f1.available();
String st="";
for(int i=0;i<x1;i++)
st=st+(char)f1.read();
f1.close();
int c=0;
StringTokenizer st1=new StringTokenizer(st,";");
while(st1.hasMoreTokens())
{
String p=st1.nextToken();
String q=st1.nextToken();
if(p.equals(x) && q.equals(y))
{
c++;
break;
}
}
if(c==0)
{
JOptionPane.showMessageDialog(this,"InValid UserName/PassWord are Entered...");
}
else
{
MainForm mf=new MainForm("DSA");
int width=Toolkit.getDefaultToolkit().getScreenSize().width;
int height=Toolkit.getDefaultToolkit().getScreenSize().height;
mf.setSize(width,height-30);
mf.setLocation(0,0);
mf.setResizable(false);
mf.setVisible(true);
setVisible(false);
}
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this,"Error in Validating the UserName/PassWord"+e);
}
}
else
{
JOptionPane.showMessageDialog(this,"PassWord is Not Specified...");
}
}
else
{
JOptionPane.showMessageDialog(this,"UserName is Not Specified...");
}
}
}
public static void main(String arg[])
{
Login lf=new Login("APPLICATION");
lf.setSize(330,180);
lf.setLocation(300,200);
lf.setResizable(false);
lf.setVisible(true);
}
}
6.2Source code for Mainform:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class MainForm extends JFrame implements ActionListener
{
JButton jb1,jb2,jb3,jb4,jb5,jb6,jb7;
public MainForm(String str)
{
super(str);
Container con=getContentPane();
con.setLayout(null);
Font f=new Font("arial",Font.BOLD,20);
jb1=new JButton("CRC GENERATION");
jb2=new JButton("COMPRESSION");
jb3=new JButton("EMBED");
jb4=new JButton("DE-EMBED");
jb5=new JButton("DE-COMPRESS");
jb6=new JButton("CRC VERIFICATION");
jb7=new JButton("EXIT");
jb1.setFont(f); jb2.setFont(f); jb3.setFont(f);
jb4.setFont(f); jb5.setFont(f); jb6.setFont(f);
jb7.setFont(f);
jb1.setBounds(250,100,280,40);
jb2.setBounds(250,200,280,40);
jb3.setBounds(250,300,280,40);
jb4.setBounds(800,100,280,40);
jb5.setBounds(800,200,280,40);
jb6.setBounds(800,300,280,40);
jb7.setBounds(550,450,280,40);
con.add(jb1); con.add(jb2); con.add(jb3); con.add(jb4);
con.add(jb5); con.add(jb6); con.add(jb7);
jb1.addActionListener(this);
jb2.addActionListener(this);
jb3.addActionListener(this);
jb4.addActionListener(this);
jb5.addActionListener(this);
jb6.addActionListener(this);
jb7.addActionListener(this);
setResizable(false);
}
public void actionPerformed(ActionEvent ae)
{
String str=ae.getActionCommand();
if(str.equals("EXIT"))
{
JOptionPane.showMessageDialog(this,"Thank U for Using the Application.....!");
System.exit(0);
}
else if(str.equals("CRC GENERATION"))
{
CRCGEN c=new CRCGEN("CRC GENERATION");
c.setSize(600,300);
c.setLocation(300,200);
c.setVisible(true);
}
else if(str.equals("COMPRESSION"))
{
COMPRESS c=new COMPRESS("COMPRESS FILE");
c.setSize(600,300);
c.setLocation(300,200);
c.setVisible(true);
}
else if(str.equals("EMBED"))
{
EMBED eb=new EMBED("EMBED FILE");
eb.setSize(600,400);
eb.setLocation(200,100);
eb.setVisible(true);
}
else if(str.equals("DE-EMBED"))
{
DEEMBED eb=new DEEMBED("DE-EMBED FILE");
eb.setSize(600,250);
eb.setLocation(200,200);
eb.setVisible(true);
}
else if(str.equals("DE-COMPRESS"))
{
DECOMPRESS dc=new DECOMPRESS("DE-COMPRESS FILE");
dc.setSize(600,300);
dc.setLocation(300,200);
dc.setVisible(true);
}
else if(str.equals("CRC VERIFICATION"))
{
CRCVER cv=new CRCVER("CRC VERIFICATION");
cv.setSize(560,180);
cv.setLocation(230,200);
cv.setVisible(true);
}
}
}
6.3 Source code for CRC-Generation:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import java.util.zip.*;
class CRCGEN extends JFrame implements ActionListener
{
JLabel l1,l2;
JTextField t1,t2;
JButton jb1,jb2,jb3;
public CRCGEN(String str)
{
super(str);
Container con=getContentPane();
con.setLayout(null);
Font f=new Font("Times New Roman",Font.BOLD,16);
l1=new JLabel("File Name : ");
l2=new JLabel("CRC File : ");
l1.setFont(f);
l2.setFont(f);
t1=new JTextField();
t1.setEnabled(false);
t1.setFont(f);
t2=new JTextField();
t2.setEnabled(false);
t2.setFont(f);
jb1=new JButton("Browse");
jb2=new JButton("GENERATE CRC");jb2.setEnabled(false);
jb3=new JButton("CLOSE");
l1.setBounds(30,50,90,25);
t1.setBounds(120,50,350,25);
jb1.setBounds(475,50,100,25);
l2.setBounds(30,90,90,25);
t2.setBounds(120,90,350,25);
jb2.setBounds(170,140,130,25);
jb3.setBounds(305,140,100,25);
con.add(l1); con.add(t1); con.add(jb1);
con.add(jb2); con.add(jb3); con.add(l2); con.add(t2);
jb1.addActionListener(this);
jb2.addActionListener(this);
jb3.addActionListener(this);
}
public void actionPerformed(ActionEvent ae)
{
String str=ae.getActionCommand();
if(str.equals("CLOSE"))
setVisible(false);
else if(str.equals("Browse"))
{
FileDialog fd=new FileDialog(this,"Load File",FileDialog.LOAD);
fd.setFile("*.txt");
fd.show();
String st=fd.getDirectory()+fd.getFile();
if(!st.equals("nullnull"))
{
t1.setText(st);jb2.setEnabled(true);
t2.setText("");
}
else
{
t1.setText("");
t2.setText("");
}
}
else
{
if(t1.getText().trim().length()!=0)
{
try
{
String src=t1.getText();
String dest=src.substring(0,src.lastIndexOf('.')+1)+"crc";
StringBuffer st1=new StringBuffer(src);
st1.setLength(50);
FileInputStream f1=new FileInputStream(src);
DataOutputStream f2=new DataOutputStream(new FileOutputStream(dest));
f2.write(st1.toString().getBytes());
CRC32 crc=new CRC32();
int x=f1.available();
for(int i=0;i<x;i++)
{
int b=f1.read();
f2.write(b);
crc.update(b);
}
long sum=crc.getValue();
f2.writeLong(sum);
f1.close();
f2.close();
t2.setText(dest);
JOptionPane.showMessageDialog(this,"CRC File is Generated Succesfully...");
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this,"Error in Generating the CRC File...");
}
}
else
{
JOptionPane.showMessageDialog(this,"No File is Specified to Generate CRC");
}
}
}
}
6.4 Source code for Compressing:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import java.util.zip.*;
class COMPRESS extends JFrame implements ActionListener
{
JLabel l1,l2;
JTextField t1,t2;
JButton jb1,jb2,jb3;
public COMPRESS(String str)
{
super(str);
Container con=getContentPane();
con.setLayout(null);
Font f=new Font("Times New Roman",Font.BOLD,16);
l1=new JLabel("File Name : ");
l2=new JLabel("Compression File : ");
l1.setFont(f);
l2.setFont(f);
t1=new JTextField();
t1.setEnabled(false);
t1.setFont(f);
t2=new JTextField();
t2.setEnabled(false);
t2.setFont(f);
jb1=new JButton("Browse");
jb2=new JButton("COMPRESS");
jb3=new JButton("CLOSE");
l1.setBounds(30,50,90,25);
t1.setBounds(120,50,350,25);
jb1.setBounds(475,50,100,25);
l2.setBounds(30,90,140,25);
t2.setBounds(170,90,350,25);
jb2.setBounds(170,140,130,25);
jb3.setBounds(305,140,100,25);
con.add(l1); con.add(t1); con.add(jb1);
con.add(jb2); con.add(jb3); con.add(l2); con.add(t2);
jb1.addActionListener(this);
jb2.addActionListener(this);
jb3.addActionListener(this);
}
public void actionPerformed(ActionEvent ae)
{
String str=ae.getActionCommand();
if(str.equals("CLOSE"))
setVisible(false);
else if(str.equals("Browse"))
{
FileDialog fd=new FileDialog(this,"Load File",FileDialog.LOAD);
fd.setFile("*.crc");
fd.show();
String st=fd.getDirectory()+fd.getFile();
if(!st.equals("nullnull"))
{
t1.setText(st);
t2.setText("");
}
else
{
t1.setText("");
t2.setText("");
}
}
else
{
if(t1.getText().trim().length()!=0)
{
try
{
String src=t1.getText();
String dest=src.substring(0,src.lastIndexOf('.')+1)+"cmp";
BufferedInputStream f1=new BufferedInputStream(new FileInputStream(src));
BufferedOutputStream f2=new BufferedOutputStream(new GZIPOutputStream(new FileOutputStream(dest)));
int ch;
long x=0;
while((ch=f1.read())!=-1)
{
f2.write(ch);
x++;
}
f1.close();
f2.close();
t2.setText(dest);
File f=new File(dest);
long y=f.length();
long z=((x-y)*100)/x;
String st="Actual Size : "+x+" Bytes\n\n";
st=st+"Compressed File Size : "+y+" Bytes\n\n";
st=st+"Compression Ration : "+z+" %";
JOptionPane.showMessageDialog(this,st);
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this,"Error in compressing the File...");
}
}
else
{
JOptionPane.showMessageDialog(this,"No File is Specified to Compress");
}
}
}
}
6.5 Source Code For Embedding:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class EMBED extends JFrame implements ActionListener
{
JLabel l1,l2,l3;
JTextField t1,t2,t3;
JButton jb1,jb2,jb3,jb4;
public EMBED(String str)
{
super(str);
Container con=getContentPane();
con.setLayout(null);
Font f=new Font("Times New Roman",Font.BOLD,20);
l1=new JLabel("Container File :");
l2=new JLabel("Compressed File : ");
l3=new JLabel("Data Key : ");
l1.setFont(f); l2.setFont(f); l3.setFont(f);
t1=new JTextField();
t2=new JTextField();
t3=new JTextField();
t1.setEnabled(false);
t2.setEnabled(false);
jb1=new JButton("Browse Container");
jb2=new JButton("Browse Compressed File");
jb3=new JButton("EMBED FILE");
jb4=new JButton("CLOSE");
l1.setBounds(30,50,150,20);
l2.setBounds(30,110,180,20);
l3.setBounds(30,170,120,20);
t1.setBounds(30,75,350,25);
t2.setBounds(30,135,350,25);
t3.setBounds(30,195,120,25);
jb1.setBounds(385,75,150,25);
jb2.setBounds(385,135,200,25);
jb3.setBounds(130,270,170,25);
jb4.setBounds(310,270,130,25);
jb3.setFont(f);
jb4.setFont(f);
con.add(l1); con.add(l2); con.add(l3); con.add(t1); con.add(t2);
con.add(t3); con.add(jb1); con.add(jb2); con.add(jb3); con.add(jb4);
jb1.addActionListener(this);
jb2.addActionListener(this);
jb3.addActionListener(this);
jb4.addActionListener(this);
}
public void actionPerformed(ActionEvent ae)
{
String str=ae.getActionCommand();
if(str.equals("CLOSE"))
{
setVisible(false);
}
else if(str.equals("Browse Container"))
{
FileDialog fd=new FileDialog(this,"Open Container",FileDialog.LOAD);
fd.setFile("*.jpg");
fd.show();
String st=fd.getDirectory()+fd.getFile();
if(!st.equals("nullnull"))
{
t1.setText(st);
}
else
{
t1.setText("");
}
}
else if(str.equals("Browse Compressed File"))
{
FileDialog fd=new FileDialog(this,"Open Container",FileDialog.LOAD);
fd.setFile("*.cmp");
fd.show();
String st=fd.getDirectory()+fd.getFile();
if(!st.equals("nullnull"))
{
t2.setText(st);
}
else
{
t2.setText("");
}
}
else if(str.equals("EMBED FILE"))
{
try
{
String c1=t1.getText();
String c2=t2.getText();
String c3=t3.getText().trim();
if(c1.length()!=0)
{
if(c2.length()!=0)
{
if(c3.length()!=0)
{
final int size=8;
int np, fv=0;
byte[] ch=new byte[size];
FileInputStream f1=new FileInputStream(c1);
FileOutputStream f2=new FileOutputStream("temp");
while((np=f1.read(ch,0,size))>0)
{
f2.write(ch,0,np);
fv=np;
}
int i;
for(i=1;i<=8-fv;i++)
{
f2.write(65);
}
f1.close();
f2.write(c3.getBytes(),0,8);
File f4=new File(c2);
StringBuffer sb=new StringBuffer(f4.getName());
sb.setLength(20);
f2.write(sb.toString().getBytes(),0,20);
f1=new FileInputStream(c2);
int c;
while((c=f1.read())!=-1)
{
f2.write(c);
}
f1.close();
f2.close();
File f=new File("temp");
File ff=new File(c1);
ff.delete();
f.renameTo(ff);
JOptionPane.showMessageDialog(this,"File is Embedded...");
}
else
{
JOptionPane.showMessageDialog(this,"Data Key is Not Specified...");
}
}
else
{
JOptionPane.showMessageDialog(this,"Compressed File is Not Specifeid...");
}
}
else
{
JOptionPane.showMessageDialog(this,"Container is Not Specified...");
}
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this,"Error in Embedding the File..."+e);
}
}
}
}
6.6 Source Code For De-Embedding:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class DEEMBED extends JFrame implements ActionListener
{
JLabel l1,l2;
JTextField t1,t2;
JButton jb1,jb2,jb3;
public DEEMBED(String str)
{
super(str);
Container con=getContentPane();
con.setLayout(null);
Font f=new Font("Times New Roman",Font.BOLD,20);
l1=new JLabel("Container File : ");
l2=new JLabel("Data Key : ");
t1=new JTextField();
t1.setEnabled(false);
t2=new JTextField();
jb1=new JButton("Browse");
jb2=new JButton("DE-EMBED");
jb3=new JButton("CLOSE");
l1.setFont(f); l2.setFont(f);
jb1.setFont(f); jb2.setFont(f); jb3.setFont(f);
l1.setBounds(30,30,150,25);
l2.setBounds(70,70,120,25);
t1.setBounds(170,33,300,25);
t2.setBounds(170,73,100,25);
jb1.setBounds(480,33,100,25);
jb2.setBounds(120,130,180,25);
jb3.setBounds(310,130,120,25);
con.add(l1); con.add(l2); con.add(t1); con.add(t2);
con.add(jb1); con.add(jb2); con.add(jb3);
jb1.addActionListener(this);
jb2.addActionListener(this);
jb3.addActionListener(this);
}
public void actionPerformed(ActionEvent ae)
{
String str=ae.getActionCommand();
if(str.equals("CLOSE"))
setVisible(false);
else if(str.equals("Browse"))
{
FileDialog fd=new FileDialog(this,"Open File",FileDialog.LOAD);
fd.setFile("*.jpg");
fd.show();
String st=fd.getDirectory()+fd.getFile();
if(!st.equals("nullnull"))
{
t1.setText(st);
t2.setText("");
}
else
{
t1.setText("");
t2.setText("");
}
}
else
{
try
{
String fname=t1.getText().trim();
String dkey=t2.getText().trim();
if(fname.length()!=0 && dkey.length()!=0)
{
FileInputStream f1=new FileInputStream(fname);
String st1="";
int c=0;
byte[] ch=new byte[8];
while((f1.read(ch,0,8))>0)
{
st1=new String(ch);
if(st1.equals(dkey))
{
c++;
break;
}
}
if(c==0)
{
JOptionPane.showMessageDialog(this,"Data Key Does Not Match...");
}
else
{
ch=new byte[50];
f1.read(ch,0,20);
st1=new String(ch);
FileOutputStream f2=new FileOutputStream(st1);
int x=f1.available();
for(int i=0;i<x;i++)
f2.write(f1.read());
f2.close();
JOptionPane.showMessageDialog(this,"File is De-Embeded Successfully...");
}
f1.close();
}
else
{
JOptionPane.showMessageDialog(this,"Container/DataKey is Not Specified...");
}
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this,"Error in De-Embedding the File...");
}
}
}
}
6.7 Source code for De-Compressing:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import java.util.zip.*;
class DECOMPRESS extends JFrame implements ActionListener
{
JLabel l1,l2;
JTextField t1,t2;
JButton jb1,jb2,jb3;
public DECOMPRESS(String str)
{
super(str);
Container con=getContentPane();
con.setLayout(null);
Font f=new Font("Times New Roman",Font.BOLD,16);
l1=new JLabel("File Name : ");
l2=new JLabel("De-Compressed File : ");
l1.setFont(f);
l2.setFont(f);
t1=new JTextField();
t1.setEnabled(false);
t1.setFont(f);
t2=new JTextField();
t2.setEnabled(false);
t2.setFont(f);
jb1=new JButton("Browse");
jb2=new JButton("DECOMPRESS");
jb3=new JButton("CLOSE");
l1.setBounds(30,50,90,25);
t1.setBounds(120,50,350,25);
jb1.setBounds(475,50,100,25);
l2.setBounds(30,90,160,25);
t2.setBounds(190,90,350,25);
jb2.setBounds(170,140,130,25);
jb3.setBounds(305,140,100,25);
con.add(l1); con.add(t1); con.add(jb1);
con.add(jb2); con.add(jb3); con.add(l2); con.add(t2);
jb1.addActionListener(this);
jb2.addActionListener(this);
jb3.addActionListener(this);
}
public void actionPerformed(ActionEvent ae)
{
String str=ae.getActionCommand();
if(str.equals("CLOSE"))
setVisible(false);
else if(str.equals("Browse"))
{
FileDialog fd=new FileDialog(this,"Load File",FileDialog.LOAD);
fd.setFile("*.cmp");
fd.show();
String st=fd.getDirectory()+fd.getFile();
if(!st.equals("nullnull"))
{
t1.setText(st);
t2.setText("");
}
else
{
t1.setText("");
t2.setText("");
}
}
else
{
if(t1.getText().trim().length()!=0)
{
try
{
String src=t1.getText();
String dest=src.substring(0,src.lastIndexOf('.')+1)+"crc";
BufferedInputStream f1=new BufferedInputStream(new GZIPInputStream(new FileInputStream(src)));
BufferedOutputStream f2=new BufferedOutputStream(new FileOutputStream(dest));
int ch=0,x=0;
while((ch=f1.read())!=-1)
{
f2.write(ch);
x++;
}
f1.close();
f2.close();
t2.setText(dest);
File f=new File(dest);
long y=f.length();
JOptionPane.showMessageDialog(this,"File DeCompression is Successfull...with size : "+y+" Bytes");
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this,"Error in decompressing the File..."+e);
}
}
else
{
JOptionPane.showMessageDialog(this,"No File is Specified to De-Compress");
}
}
}
}
6.8 Source Code For CRC-Verificatiom:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.zip.*;
class CRCVER extends JFrame implements ActionListener
{
JLabel l1;
JTextField t1;
JButton jb1,jb2,jb3;
public CRCVER(String str)
{
super(str);
Container con=getContentPane();
con.setLayout(null);
l1=new JLabel("CRC File Name : ");
t1=new JTextField();
t1.setEnabled(false);
jb1=new JButton("Browse");
jb2=new JButton("CRC VERIFY");
jb3=new JButton("CLOSE");
l1.setBounds(30,30,100,20);
t1.setBounds(125,30,300,20);
jb1.setBounds(430,30,100,20);
jb2.setBounds(140,80,130,20);
jb3.setBounds(300,80,100,20);
con.add(l1); con.add(t1); con.add(jb1); con.add(jb2); con.add(jb3);
jb1.addActionListener(this);
jb2.addActionListener(this);
jb3.addActionListener(this);
}
public void actionPerformed(ActionEvent ae)
{
String str=ae.getActionCommand();
if(str.equals("CLOSE"))
setVisible(false);
else if(str.equals("Browse"))
{
FileDialog fd=new FileDialog(this,"Open CRC File",FileDialog.LOAD);
fd.setFile("*.crc");
fd.show();
str=fd.getDirectory()+fd.getFile();
if(!str.equals("nullnull"))
t1.setText(str);
else
t1.setText("");
}
else
{
try
{
String src=t1.getText().trim();
FileInputStream fis=new FileInputStream(src);
DataInputStream f1=new DataInputStream(fis);
int length=fis.available();
byte[] ch=new byte[50];
f1.read(ch,0,50);
CRC32 c=new CRC32();
int x;
int c1=0;
String dest=src.substring(0,src.lastIndexOf('.')+1)+".txt";
FileOutputStream f3=new FileOutputStream(dest);
while((x=f1.read())!=-1)
{
f3.write(x);
c1++;
c.update(x);
if(f1.available()<=8)
break;
}
long y=f1.readLong();
long z=c.getValue();
f1.close();
f3.close();
if(y==z)
JOptionPane.showMessageDialog(this,"File is Not Corrupted...");
else
JOptionPane.showMessageDialog(this,"File is Corrupted...");
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this,e);
}
}
}
}
7.Software Testing
7.1 Introduction:
Testing is the process of detecting errors for which the required open web application
secure employment portal specifications stated. Testing performs a very critical role for quality
assurance and for ensuring the reliability of software. The results of testing are used later on
during the software maintenance.
The aim of testing is often used to demonstrate that a program works by showing that it
has no errors. The basic purpose of testing phase is to detect the errors that may be present in the
program. Hence one should not start testing with the intent of showing that a program works, but
the intent should be to show that a program doesn’t work. The main objective of testing is to
uncover an error in systematic way with minimum effort and time.
7.2 Levels of testing
In order to uncover the errors present in different phases the different levels of testing
are:
System Testing
Function testing
The different types of testing are:
Unit testing
Link testing
.
7.2.1 Unit Testing:
This test focuses on verification effort on the smallest unit of software module. Using the
detailed design and the process specifications testing is done to uncover errors within the
boundary of the module. All the modules must be successful in the unit test before the start of the
integration testing begins.
In this project each service is a module like Login, Forms etc. Each module has to be
tested by giving different sets of inputs. The inputs are validated when accepting from user.
7.2.2 Integration testing:
After the unit testing the integration of modules ahs to be done and then integration
testing can be done. The goal here is to see if modules can be integrated properly, the emphasis
being on testing interfaces between different modules.
7.2.3 System Testing:
In the system testing the entire web portal is tested according the software requirement
specifications document.
7.2.4 Acceptance testing:
The acceptance testing is performed with realistic data of the client, which focus on the
external behavior of the system; the internal logic of the program is emphasized.
Software testing is a critical element of software quality assurance and represents the ultimate
review of specification, design and coding. Testing is the exposure of the system to trial input to
see whether it produces correct output.
Testing Phases:
Software testing phases include the following:
Test activities are determined and test data selected.
The test is conducted and test results are compared with the expected results.
7.3 Testing Methods:
Testing is a process of executing a program to find out errors. If testing is conducted
successfully, it will uncover all the errors in the software.
Any testing can be done basing on two ways:
White Box Testing
Black Box Testing
7.3.1 White Box Testing:
It is a test case design method that uses the control structures of the procedural design to
derive test cases.
Using this testing a software Engineer can derive the following test cases:
Exercise all the logical decisions on either true or false sides.
Execute all loops at their boundaries and within their operational boundaries.
Exercise the internal data structures to assure their validity.
7.3.2 Black Box Testing
It is a test case design method used on the functional requirements of the software. It will
help a software engineer to derive sets of input conditions that will exercise all the functional
requirements of the program.
Black Box testing attempts to find errors in the following categories:
Incorrect or missing functions
Interface errors
Errors in data structures
Performance errors
Initialization and termination errors
By black box testing we derive a set of test cases that satisfy the following criteria:
Test cases that reduce by a count that is greater than one
The number of additional test cases that must be designed to achieve reasonable testing.
7.4 Test Plan
Testing can be done in two ways:
Bottom up approach
Top down approach
7.4.1 Bottom up approach:
Testing can be performed starting from smallest and lowest level modules and proceeding
one at a time. For each module in bottom up testing a short program executes the module and
provides the needed data so that the module is asked to perform the way it will when embedded
with in the larger system. When bottom level modules are tested attention turns to those on the
next level that use the lower level ones they are tested individually and then linked with the
previously examined lower level modules.
7.4.2 Top down approach:
This type of testing starts from upper level modules. Since the detailed activities usually
performed in the lower level routines are not provided stubs are written. A stub is a module shell
called by upper level module and that when reached properly will return a message to the calling
module indicating that proper interaction occurred. No attempt is made to verify the correctness
of the lower level module.
8.TECHNICAL NOTES
8.1 Operating System
Developer has used Microsoft Window 7 for the application development for final year
project work under Windows platform,as the software is compatible with Microsoft family.
8.1.1 JAVA
Java is a powerful but lean object-oriented programming language. It has generated a lot
of excitement because it makes it possible to program for Internet by creating Applets. Programs
that can be embedded in web page. The context of an applet can be an animation with sound, an
interactive game or a ticker tape. With constantly updated stock prices. Applets can be just little
decorations to liven up web page, or they can be serious applications like Word processor or
Spreadsheet.
But Java is more than a programming language for writing Applets. It is being used more
and more for writing standalone applications as well. It is becoming so popular that many people
believe it will become standard language for both general purpose and Internet programming.
There are many buzzwords associated with Java, but because of its spectacular growth in
popularity, a new buzzword has appeared ubiquitous. Indeed, all indications are that it will soon
be everywhere.
Java builds on the strength of C++. It has taken the best features of C++ and discarded
the more problematic and error prone parts. To this lean core, it has added garbage collection
(automatic memory management), multithreading (the capacity for one program to do more than
one thing at a time), security capabilities. This result is that Java is simple, elegant, and powerful
and easy-to-use.
Java is actually a platform consisting of 3 components:
Java Programming Language.
Java Library of Classes and Interfaces.
Java Virtual Machine
9 CONCLUSION
The use of DSA for Infosecurity in various e-commerce applications through the Internet
has been discussed in detail in this paper. These applications include CRC file generation and
encrypting the data to binary mode object by compressing and embedding it to users interested
container and then to extract the original data and special feature to verify whether the data is
corrupted or not. DSA canprovide one of the safest and unrestricted information security tools in
the market, and is poised to advance the pace of growth of e-commerce applications in India and
beyond.