Java Project - Digital Steganography Software [with full source code, demo video, report and documentation]



In large organizations, secrecy is of high importance and maintaining it is a top priority. The intelligence of hackers has made this a very tedious task today. Cryptography was previously used for sending and receiving secret information but it did not prove that secure as it gave suspicions to hackers.

To overcome this problem, digital steganography came as a solution. It neither gives suspicion to hackers nor affects unintended users. It simply uses multimedia data as a medium to cover secret information that can then be transmitted to desired locations.

You can get the complete source code, documentation and project report of this software project from the download link. Below, I’ve briefly introduced the project abstract with system specifications; you can find detailed info, including design details, in the project report.

FEATURES

This digital steganography project is implemented in Java; it requires Java development kit (J2sdk1.4.1 and above). It can be run on any operating system. This system provides a user-friendly interface. Being developed in Java, it is platform independent and highly flexible.

Here, secret information are hidden within data i.e, multimedia data, which is an image, and the data (secret information) can be sent anywhere. The multimedia data simply acts as a medium to maintain secrecy of the information to be conveyed.

In order to hide data within an image, the sender-side program is to be run. And, for receiving the hidden secret information, you need to run the receiver-side program.

This digital steganography contains both sender and receiver-side programs. So, user can use a program depending on whether they want to receive or send data.

MODULE OVERVIEW

Digital Steganography is a two-modules project, namely: making stegano medium and getting secret information from stegano medium.

In the first module, making stegano medium, the secret information to be transmitted in hidden in an image file. This first requires a user code and then the information. After that, a secret code is generated based on the user code and the secret information which is later used by receiver to extract the information transmitted.

In getting secret information from stegano medium module, only those who have the secret code generated by the first module can see the secret information hidden under an image. Actually, anyone can see the image, but not the information – not without the secret code.


SYSTEM SPECIFICATION

1. Hardware Specification:

  • Processor:    Pentium IV
  • 40 GB hard disk space.
  • 256 MB RAM or more.
  • 1.44 Floppy Disk Drive.
  • 104 keys keyboard.
  • Display capable of showing 65,000 colors or more.
  • CD-ROM Drive for installing the package.
  • Mouse with minimum two buttons.
2. Software Specification:
  • Front End:    Java (jdk1.4.1 and above)
  • OS        :       Windows / Linux / Solaris

DESCRIPTION OF THE PROJECT




SAMPLE CODE OF THE PROJECT
Home.java

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

public class Home extends JFrame implements ActionListener

{

private JButton compose,breakmsg;

Home()

{

super("Steganography");

Container con=getContentPane();

con.setLayout(null);

compose=new JButton("Compose");

compose.addActionListener(this);

compose.setBounds(300,350,150,50);

breakmsg=new JButton("Break");

breakmsg.addActionListener(this);

breakmsg.setBounds(550,350,150,50);

con.add(compose);

con.add(breakmsg);

}

public void actionPerformed(ActionEvent ae)

{

if(ae.getSource()==compose)

{

this.dispose();

ComposePage cp=new ComposePage();

cp.setSize(1035,790);

cp.setVisible(true);

}

if(ae.getSource()==breakmsg)

{

this.dispose();

BreakPage bp=new BreakPage();

bp.setSize(1035,790);

bp.setVisible(true);

}

}

public static void main(String args[])

{

Home h=new Home();

h.setSize(1035,790);

h.setVisible(true);

}

}

ComposePage.java

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

import java.io.*;

import java.awt.image.*;

import com.sun.image.codec.jpeg.*;

public class ComposePage extends JFrame implements ActionListener

{

private JLabel code_label,secret_label,picture_label;

private JTextField code_text,secret_text,picture_text;

private JButton picture_load_button,hide_button,home_button;

String filepath="",secret_code="",secret_info="",user_key="";

Container con=null;

JLabel jl;

byte img_byte[]=new byte[6000];

FileDialog fd;

COMPOSE:

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

import java.io.*;

import java.awt.image.*;

import com.sun.image.codec.jpeg.*;

public class ComposePage extends JFrame implements ActionListener

{

private JLabel code_label,secret_label,picture_label;

private JTextField code_text,secret_text,picture_text;

private JButton picture_load_button,hide_button,home_button;

String filepath="",secret_code="",secret_info="",user_key="";

Container con=null;

JLabel jl;

byte img_byte[]=new byte[6000];

FileDialog fd;

Image img;

Dimension d;

int iw,ih;

int w=10,h=10;

int pix[];

int hist[]=new int[256];

int t[];

int max_hist=0;

boolean ok;

static Image newimg;

int key,k;



ComposePage()

{

super("Compose");

con=getContentPane();

con.setLayout(null);

code_label=new JLabel("Security Code");

code_label.setBounds(230,100,150,50);

code_text=new JTextField(200);

code_text.setBounds(400,100,250,40);

secret_label=new JLabel("Secret Information");

secret_label.setBounds(230,200,150,50);

secret_text=new JTextField(200);

secret_text.setBounds(400,200,250,40);

picture_label=new JLabel("Picture");

picture_label.setBounds(230,300,250,40);

picture_text=new JTextField(200);

picture_text.setBounds(400,300,250,50);

picture_load_button=new JButton("Load");

picture_load_button.setBounds(700,300,150,30);

picture_load_button.addActionListener(this);

hide_button=new JButton("Hide");

hide_button.setBounds(400,400,150,30);

hide_button.addActionListener(this);

home_button=new JButton("Home");

home_button.setBounds(700,400,150,30);

home_button.addActionListener(this);

jl=new JLabel();

jl.setBounds(700,500,150,30);

fd=new FileDialog(new JFrame());

con.add(code_label);

con.add(code_text);

con.add(secret_label);

con.add(secret_text);

con.add(picture_label);

con.add(picture_text);

con.add(picture_load_button);

con.add(hide_button);

con.add(home_button);

//con.add(jl);

}

public void actionPerformed(ActionEvent ae)

{

if(ae.getSource()==picture_load_button)

{

fd.setVisible(true);

filepath=fd.getDirectory()+fd.getFile();

picture_text.setText(filepath);

}else if(ae.getSource()==hide_button)

{

int starflag=0;

secret_code=code_text.getText();

for(int i=0;i
{

if(secret_code.charAt(i)=='*')

{

starflag=1;

}

}

if(starflag==0)

{

secret_info=secret_text.getText();

user_key=secret_code+"*"+new String(""+secret_info.length());

System.out.println("user key :"+user_key);

String secret_code_info=user_key+"*"+secret_info+"*";

byte secret_byte_array[]=secret_code_info.getBytes();

int secret_int_array[]=new int[secret_byte_array.length];

try{

if(filepath.equals("") && (secret_text.getText()).equals("")) JOptionPane.showMessageDialog(null,"image and secret info are empty. enter them");

else if(secret_info.length()==0 && filepath.length()>0)

JOptionPane.showMessageDialog(null,"enter secret info");

else if(filepath.length()==0 && (secret_text.getText()).length()>0)

JOptionPane.showMessageDialog(null,"load an image");

else

{

ImageIcon ic=new ImageIcon(filepath);

img=ic.getImage();

iw=img.getWidth(null);

ih=img.getHeight(null);

pix=new int[iw*ih];

t=new int[iw*ih];

PixelGrabber pg=new PixelGrabber(img,0,0,iw,ih,pix,0,iw);

ColorModel cm=pg.getColorModel();

int ww=pg.getWidth();

int hh=pg.getHeight();

pg.grabPixels();

key=secret_byte_array.length;

int k=key;

int j=0;

for(int i=0;i
{

if((i%20)==0 && k>0)

{

secret_int_array[j]=(int)secret_byte_array[j];

System.out.println("user key :"+secret_int_array[j]);

pix[i]=secret_int_array[j];

j++;

k--;

}

}

newimg =con.createImage(new MemoryImageSource(ww,hh,cm,pix, 0, ww));

jl.setIcon(new ImageIcon(newimg));

JOptionPane.showMessageDialog(null,"your secret code: "+user_key+"");

MediaTracker mediaTracker = new MediaTracker(new Container());

mediaTracker.addImage(newimg, 0);

mediaTracker.waitForID(0);

int thumbWidth = 400;//Integer.parseInt(400);

int thumbHeight = 400;//Integer.parseInt(400);

double thumbRatio = (double)thumbWidth / (double)thumbHeight;

int imageWidth = newimg.getWidth(null);

int imageHeight = newimg.getHeight(null);

double imageRatio = (double)imageWidth / (double)imageHeight;

if (thumbRatio < imageRatio)

{

thumbHeight = (int)(thumbWidth / imageRatio);

}

else

{

thumbWidth = (int)(thumbHeight * imageRatio);

}

BufferedImage thumbImage = new BufferedImage(newimg.getWidth(null), newimg.getHeight(null), BufferedImage.TYPE_INT_RGB);

Graphics2D graphics2D = thumbImage.createGraphics();

graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,

RenderingHints.VALUE_INTERPOLATION_BILINEAR);

graphics2D.drawImage(newimg, 0, 0, newimg.getWidth(null),

newimg.getHeight(null), null);

File f=new File("secpic.jpg");

BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(f));

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

JPEGEncodeParam param = encoder.

getDefaultJPEGEncodeParam(thumbImage);

int quality = 80;

quality = Math.max(0, Math.min(quality, 100));

param.setQuality((float)quality / 100.0f, false);

encoder.setJPEGEncodeParam(param);

encoder.encode(thumbImage);

out.close();

System.out.println("Done.");

test t=new test(newimg);

t.setSize(1035,790);

t.setVisible(true);

}

}catch(Exception e)

{

System.out.println(e);

}

}else

JOptionPane.showMessageDialog(null,"Do not enter '*' in secrect code");

}else

{

this.dispose();

Home h=new Home();

h.setSize(1035,790);

h.setVisible(true);

}

}

public static void main(String args[])

{

ComposePage cp=new ComposePage();

cp.setSize(1035,740);

cp.setVisible(true);

}

}



PROJECT SCREENSHOTS






CONCLUSION

The proposed Digital Steganography project provides a GUI, user-friendly software system through which secret information can be easily transmitted without hackers knowing anything about it. Attaining all Java features, this system is platform independent and flexible.

PURCHASE THIS PROJECT


If you purchase this project, you will get full source code of the project

with project presentation, report of the project and synopsis of the project.

You can use your paypal account or your debit/credit card of any bank account.

You will receive your all files with purchase receipt on your mail.


100% DISCOUNT FOR ALL CUSTOMERS

We are providing 100% discount for our all lucky customers only. 
Hurry Up and avail this coupon code before the deal ends.

"javaalloff

Enter this discount coupon code in discount field during purchase.
Then you'll not have to add any card details in the purchase,
if their is 100% off.


BUY THIS PROJECT FOR FREE OF COST

Post a Comment

0 Comments