Vous êtes sur la page 1sur 71

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 doesnt 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

CONTENTS
S.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

Topic

Page no

LIST OF FIGURES
FIGURES
1.1 1.2 1.3 DFD Diagram Level-1 DFD Diagram Level-2 E-R Diagram for System

PAGE NO

LIST OF UML DIAGRAMS


FIGURES
1.1 1.2 1.3 1.4 Use Case Diagram Sequence Diagram Activity Diagram Class Diagram

PAGE NO

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 softwares 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 dont 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 wordquality.design provides us with representations of software that can be assessed for quality. Design is the only way where we can accurately translate a customers 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 javas 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 ADMINSTRATOR Authenticated DSA

DFD LEVEL-II

Confidential file

CRC-Generation

Compression

Data Key Open channel De-Embedding Communication Embedding

Data Key

Container file

De-Compression

CRC-Verification

Confidential file

ER Diagram

CRC-Generation Username Password Compression

Embedding ADMINSTRATOR Login DSA

De-Embedding

De-Compression

CRC-Verification

4.4 Uml diagram 4.4.1 Usecase Diagram

Login

CRC-Generation

Compression

Embedding USER

System

De-Embedding

De-Compressing

CRC-Verification

4.4.2 Sequence Diagram


USER 1: User Login Request 2: Prompt for Username & Password 3: Enter Username & Password DSA SYSTEM

4: Verify 5: Return Status(Success/Failure)

6: Load Modules(Success) 7: Report Error Message(Failure)

4.4.3 Class Diagram

4.5 HARDWARE AND SOFTWARE REQUIRMENTS


4.5.1 HARDWARE REQUIREMENTS
Processor Processor speed RAM Hard Disk : Intel P-IV based system : 250MHz to 833MHz : 512 Mb : 2GB to 30GB

4.5.2 SOFTWARE REQUIREMENTS


Language Operating System : Java (Swings) :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); jb4.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(jb5); con.add(jb2); con.add(jb6); con.add(jb3); con.add(jb4); con.add(jb7); jb2.setFont(f); jb5.setFont(f); jb3.setFont(f); jb6.setFont(f);

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(l2); con.add(t2);

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,"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(l2); con.add(t2);

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,"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(t3); con.add(l2); con.add(jb1); con.add(l3); con.add(jb2); con.add(t1); con.add(t2);

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); jb1.addActionListener(this); jb2.addActionListener(this); jb3.addActionListener(this); }

con.add(jb3);

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(l2); con.add(t2);

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,"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 doesnt 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.

Vous aimerez peut-être aussi