0% found this document useful (0 votes)
69 views22 pages

Main Project Final Mad

This document is a micro project report submitted by Akshay Bhandwalkar for an Android application for image steganography using Android Studio. It discusses developing an app to hide secret messages or images within cover images. The report includes an introduction to steganography, literature review on existing techniques, system requirements, architecture diagram, advantages of using steganography over encryption alone, and plans for future improvements to increase security.

Uploaded by

Omkar Kapse
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
69 views22 pages

Main Project Final Mad

This document is a micro project report submitted by Akshay Bhandwalkar for an Android application for image steganography using Android Studio. It discusses developing an app to hide secret messages or images within cover images. The report includes an introduction to steganography, literature review on existing techniques, system requirements, architecture diagram, advantages of using steganography over encryption alone, and plans for future improvements to increase security.

Uploaded by

Omkar Kapse
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 22

A

Micro Project Report


On
“Android Application for Image
Steganography using
Android Studio”

Submitted by
Akshay Bhandwalkar

Under the Guidance of


Prof. Shital Khote

In the Partial Fulfilment of Sixth Semester of Diploma


in Information Technology Engineering

JSPM‟s
JAYAWANTRAO SAWANT POLYTECHNIC, Handewadi Road,
Hadapsar, Pune-28
Department of Information Technology
Affiliated to

Maharashtra State
Board of Technical Education

Academic Year 2022-23


Maharashtra State
Board of Technical Education

Certificate

This is to certify that Akshay Prakash Bhandwalkar with Roll No- 53 has successfully completed
Micro-project in course Mobile Application Development(22617) for the academic year 2022-2023 as
prescribed in the 'Assessment Manual' during his/her tenure of completing Sixth Semester of Diploma
Programme in Information Technology from Institute, JSPM‟S Jayawantrao Sawant Polytechnic with
Institute code 0711.

Place: Hadapsar Enrollment No: 2107110561

Date: Exam Seat No:

Course Teacher Head of the Department Head of the Institute


➢ Abstract:-
Image Steganography is mainly used for hiding an image or secret message in a
cover image. For data hiding, this technique is being widely used for so many years. Image
steganography is being used now by government, individual sender and receiver, in
business and in so many fields. Now-a-days, this process has become very popular
worldwide. People are doing research on image steganography and inventing new even
stronger algorithms for image steganography. Hiding data in cover image by modifying bits
of that is now optimized by so many new algorithms. Enthusiastic people are increasing
demand of researching on image steganography and developing PC software and mobile
application using different developing tools, programming languages and their own
invention, algorithms etc. Steganography is the process of hiding a secret message within
a larger one, in such a way that someone cannot know the presence or contents of the hidden
message. Although related, steganography is not to be confused with Encryption, which is
the process of making a message unintelligible. Whereas, steganography attempts to hide
the existence of communication. The main advantage of steganography algorithm is
because of its simple security mechanism. Because the steganographic message is
integrated invisibly and covered inside other harmless sources, it is very difficult to detect
the message without knowing the existence and the appropriate encoding scheme.

I. INTRODUCTION:-
Data hiding is a popularly used technique for secure communication. Data
hiding is the technique of embedding information into digital content without causing
perceptual degradation. Watermarking, cryptography and steganography are three
famous techniques used in data hiding. Steganography is an ancient science for hiding
the information in the communication. Steganography is defined as a technique for
concealing information and it is applied in the area of the computers and networks
widely. There are different types of steganography processes like steganography for
hiding data in a text, steganography for hiding data in an image, steganography for
hiding images in an audio, steganography for hiding images in a video, steganography
for hiding images in a protocol etc. Among them, image steganography is the mostly
used technique now-a-days. Image Steganography is defined as a hiding process of a
secret message within an image in such a way that others cannot understand the
presence of contents of the hidden message.

II. LITERATURE SURVEY:-

A literature survey is a summary of a set of related research. It selects


information from papers, and organizes and integrates it into a logical justification.
This section aims to report a study of researchers’ preferences in selecting information
from cited papers to include review, and the kinds of transformations and editing
applied to the selected information.

In this survey, authors discuss the improvements that enhance the


steganography results such as high robustness, high embedding capacity and un-
detectability of hidden information. Along with this survey two new techniques are also
proposed. First technique is used to embed data or secret messages into the cover image
and in the second technique a secret gray scale image is embedded into another gray
scale image. These techniques use four state table that produce pseudo random
numbers. This is used for embedding the secret information. These two methods have
greater security because secret information is hidden on random selected locations of
LSBs of the image with the help of pseudo random numbers generated by the table.

This technique is proposed to minimize the distortion on the texture. In this


method of steganography, firstly the rotation, complement and mirroring invariant
texture patterns are extracted from the binary image. They also proposed a
measurement and based on this proposed measurement this approach is practically
implemented. Practical results show that proposed steganographic approach has high
statistical security with high stego image quality and high embedding capacity.
III. SYSTEM REQUIREMENTS:-

A. Hardware Requirements

1. Minimum i5 or above Processor


2. Minimum 4 GB or above RAM
3. Windows OS
B. Software Requirements

1. Java
2. XML
3. Android Studio
IV. ARCHITECTURE DIAGRAM:-

V. EXISTING SYSTEM:-
There have been many techniques for hiding messages in images in such a
manner that the alterations made to the image are perceptually indiscernible. However,
the question whether they result in images that are statistically indistinguishable from
unhampered images has not been adequately explored. There are various algorithms
used to hide a message in an image. But, mostly in all the places the old algorithms are
used. Which is not a huge problem, but as the technology develops, the latest algorithm
must be used to not question the privacy of users.
VI. PROPOSED SYSTEM:-

We look at some specific image-based steganography techniques and show that


an observer can indeed distinguish between images carrying a hidden message and
images which do not carry a message. We derive a closed form expression of the
probability of detection and false alarm in terms of the number of bits that are hidden.
This leads us to the notion of steganographic capacity, that is, how many bits can we
hide in a message without causing statistically significant modifications? Our results
are able to provide an upper bound on the capacity. Our ongoing work relates to
adaptive steganographic techniques that take explicit steps to foil the detection
mechanisms. And a much stronger algorithm is used to ensure the safety of the
encrypted text in the image.

VII. ADVANTAGES OF STEGANOGRAPHY:-


The advantage of steganography, over cryptography alone, is that messages do
not attract attention to themselves. Plainly visible encrypted messages—no matter how
unbreakable—will arouse suspicion, and may in themselves be incriminating in
countries where encryption is illegal. Therefore, whereas cryptography protects the
contents of a message, steganography can be said to protect both messages and
communicating parties. This method featured security, capacity, and robustness, the
three needed aspects of steganography that makes it useful in hidden exchange of
information through text documents and establishing secret communication. Important
files carrying confidential information can be in the server in and encrypted form No
intruder can get any useful information from the original file during transmit. With the
use of Steganography, Corporation Government and law enforcement agencies can
communicate secretly.

VIII. FUTURE SCOPE:-


In today’s world, we often listen a popular term “Hacking”. Hacking is nothing
but an unauthorized access of data which can be collected at the time of data
transmission. With respect to steganography, this problem is often taken as
Steganalysis. Steganalysis is a process in which a steganalyzer cracks the cover object
to get the hidden data. So, whatever be the technique will be developed in future,
degree of security related with that has to be kept in mind. It is hoped that Dual
Steganography, Steganography along with Cryptography may be some of the future
solution for this above-mentioned problem. We hope to add support to hide all file
formats. This allows for a much broader spectrum of uses: one would be able to encode
.GIF, PNG, pdf, .mp3, etc. The program would be more versatile because often hiding
text just isn’t enough. We also would like to implement batch image processing and
statistical analysis so that we can run the program through a dataset of images and
detect Steganography and perhaps crawl through Google Image Search to see how
prevalent Steganography is. We eventually plan to port the program to use C/C++ so
that we may take advantage of bit-fields in C and learn to code GUI’s as well. I have a
plug-in handler developed for C++ that I would like to use in this project so that third-
party developers may contribute to the project.
Program Code

activity_main.xml
<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_margin="16dp" android:layout_width="match_parent"
android:layout_height="match_parent"><Button android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="Encode"
android:layout_marginTop="125dp" android:layout_centerHorizontal="true"
android:layout_alignParentTop="true" android:id="@+id/encode_button"/><Button
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="Decode" android:layout_marginTop="65dp" android:id="@+id/decode_button"
android:layout_below="@+id/encode_button"
android:layout_alignEnd="@+id/encode_button"/></RelativeLayout>
activity_encode.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:layout_height="match_parent"
android:layout_width="match_parent"
android:layout_margin="16dp"
xmlns:android="http://schemas.android.com/apk/res/android" >
<ImageView
android:id="@+id/imageview"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<Button
android:id="@+id/choose_image_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="Choose Image" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/choose_image_button"
android:layout_marginTop="45dp"
android:layout_toStartOf="@+id/choose_image_button"
android:text="Message - "
android:textAlignment="center"
android:textAllCaps="false"
android:textAppearance="@style/TextAppearance.AppCompat.Button"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/textView"
android:layout_below="@+id/message"
android:layout_marginTop="35dp"
android:text="Secret Key - "
android:textAlignment="center"
android:textAllCaps="false"
android:textAppearance="@style/TextAppearance.AppCompat.Button"
android:textSize="16sp"
android:textStyle="bold" />
<EditText
android:id="@+id/secret_key"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView2"
android:layout_alignBottom="@+id/textView2"
android:layout_alignParentEnd="true"
android:layout_marginEnd="19dp"
android:ems="10"
android:hint="Enter secret key"
android:inputType="textPassword"
android:textSize="14sp" />
<EditText
android:id="@+id/message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/secret_key"
android:layout_alignTop="@+id/textView"
android:ems="10"
android:hint="Enter message"
android:inputType="textPersonName"
android:textSize="14sp" />
<Button
android:id="@+id/encode_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginEnd="17dp"
android:layout_toStartOf="@+id/secret_key"
android:text="Encode"
android:textAlignment="center"
android:textSize="14dp" />
<Button
android:id="@+id/save_image_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignEnd="@+id/secret_key"
android:layout_alignTop="@+id/encode_button"
android:layout_marginEnd="36dp"
android:text="Save Image" />
<TextView
android:id="@+id/whether_encoded"
android:layout_width="70dp"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:textStyle="bold" />
</RelativeLayout>

activity_decode.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:layout_height="match_parent"
android:layout_width="match_parent"
android:layout_margin="16dp"
xmlns:android="http://schemas.android.com/apk/res/android" >
<ImageView
android:id="@+id/imageview"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<Button
android:id="@+id/choose_image_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="Choose Image" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/choose_image_button"
android:layout_marginTop="45dp"
android:layout_toStartOf="@+id/choose_image_button"
android:text="Secret Key -"
android:textAlignment="center"
android:textAllCaps="false"
android:textAppearance="@style/TextAppearance.AppCompat.Button"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/message"
android:layout_alignBottom="@+id/message"
android:layout_alignStart="@+id/textView"
android:text="Message"
android:textAlignment="center"
android:textAllCaps="false"
android:textAppearance="@style/TextAppearance.AppCompat.Button"
android:textSize="16sp"
android:textStyle="bold" />
<EditText
android:id="@+id/secret_key"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView"
android:layout_alignBottom="@+id/textView"
android:layout_alignParentEnd="true"
android:layout_marginEnd="18dp"
android:ems="10"
android:hint="Enter secret key"
android:inputType="textPassword"
android:textSize="14sp" />
<EditText
android:id="@+id/message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/decode_button"
android:layout_alignStart="@+id/secret_key"
android:layout_marginBottom="20dp"
android:ems="10"
android:hint="Your message"
android:inputType="textPersonName"
android:textSize="14sp" />
<Button
android:id="@+id/decode_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="Decode"
android:textAlignment="center"
android:textSize="14dp" />
<TextView
android:id="@+id/whether_decoded"
android:layout_width="70dp"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:textStyle="bold" />
</RelativeLayout>
MainActivity.java
package com.ayush.steganography;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button encode = findViewById(R.id.encode_button);
Button decode = findViewById(R.id.decode_button);
encode.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(getApplicationContext(), Encode.class));
}
});
decode.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(getApplicationContext(), Decode.class));
}
});
}
}
Encode.java
package com.ayush.steganography;
import android.Manifest;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import com.ayush.imagesteganographylibrary.Text.AsyncTaskCallback.TextEncodingCallback;
import com.ayush.imagesteganographylibrary.Text.ImageSteganography;
import com.ayush.imagesteganographylibrary.Text.TextEncoding;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
public class Encode extends AppCompatActivity implements TextEncodingCallback {
private static final int SELECT_PICTURE = 100;
private static final String TAG = "Encode Class";
//Created variables for UI
private TextView whether_encoded;
private ImageView imageView;
private EditText message;
private EditText secret_key;
//Objects needed for encoding
private TextEncoding textEncoding;
private ImageSteganography imageSteganography;

private ProgressDialog save;


private Uri filepath;
//Bitmaps
private Bitmap original_image;
private Bitmap encoded_image;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_encode);
//initialized the UI components
whether_encoded = findViewById(R.id.whether_encoded);
imageView = findViewById(R.id.imageview);
message = findViewById(R.id.message);
secret_key = findViewById(R.id.secret_key);
Button choose_image_button = findViewById(R.id.choose_image_button);
Button encode_button = findViewById(R.id.encode_button);
Button save_image_button = findViewById(R.id.save_image_button);
checkAndRequestPermissions();
//Choose image button
choose_image_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ImageChooser();
}
});
//Encode Button
encode_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
whether_encoded.setText("");
if (filepath != null) {
if (message.getText() != null) {
//ImageSteganography Object instantiation
imageSteganography = new ImageSteganography(message.getText().toString(),
secret_key.getText().toString(),
original_image);
//TextEncoding object Instantiation
textEncoding = new TextEncoding(Encode.this, Encode.this);
//Executing the encoding
textEncoding.execute(imageSteganography);
}
}
}
});
//Save image button
save_image_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final Bitmap imgToSave = encoded_image;
Thread PerformEncoding = new Thread(new Runnable() {
@Override
public void run() {
saveToInternalStorage(imgToSave);
}
});
save = new ProgressDialog(Encode.this);
save.setMessage("Saving, Please Wait...");
save.setTitle("Saving Image");
save.setIndeterminate(false);
save.setCancelable(false);
save.show();
PerformEncoding.start();
}
});
}
private void ImageChooser() {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), SELECT_PICTURE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//Image set to imageView
if (requestCode == SELECT_PICTURE && resultCode == RESULT_OK && data != null
&& data.getData() != null) {
filepath = data.getData();
try {
original_image = MediaStore.Images.Media.getBitmap(getContentResolver(),
filepath);
imageView.setImageBitmap(original_image);
} catch (IOException e) {
Log.d(TAG, "Error : " + e);
}
}
}
// Override method of TextEncodingCallback
@Override
public void onStartTextEncoding() {
//Whatever you want to do at the start of text encoding
}
@Override
public void onCompleteTextEncoding(ImageSteganography result) {
//By the end of textEncoding
if (result != null && result.isEncoded()) {
encoded_image = result.getEncoded_image();
whether_encoded.setText("Encoded");
imageView.setImageBitmap(encoded_image);
}
}
private void saveToInternalStorage(Bitmap bitmapImage) {
OutputStream fOut;
File file = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_DOWNLOADS), "Encoded" + ".PNG"); // the File to
save ,
try {
fOut = new FileOutputStream(file);
bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, fOut); // saving the Bitmap
to a file
fOut.flush(); // Not really required
fOut.close(); // do not forget to close the stream
whether_encoded.post(new Runnable() {
@Override
public void run() {
save.dismiss();
}
});
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private void checkAndRequestPermissions() {
int permissionWriteStorage = ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE);
int ReadPermission = ContextCompat.checkSelfPermission(this,
Manifest.permission.READ_EXTERNAL_STORAGE);
List<String> listPermissionsNeeded = new ArrayList<>();
if (ReadPermission != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.READ_EXTERNAL_STORAGE);
}
if (permissionWriteStorage != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
}
if (!listPermissionsNeeded.isEmpty()) {
ActivityCompat.requestPermissions(this, listPermissionsNeeded.toArray(new String[0]),
1);
}
}
}
Decode.java
package com.ayush.steganography;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import com.ayush.imagesteganographylibrary.Text.AsyncTaskCallback.TextDecodingCallback;
import com.ayush.imagesteganographylibrary.Text.ImageSteganography;
import com.ayush.imagesteganographylibrary.Text.TextDecoding;
import java.io.IOException;
public class Decode extends AppCompatActivity implements TextDecodingCallback {
private static final int SELECT_PICTURE = 100;
private static final String TAG = "Decode Class";
//Initializing the UI components
private TextView textView;
private ImageView imageView;
private EditText message;
private EditText secret_key;
private Uri filepath;
//Bitmap
private Bitmap original_image;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_decode);
//Instantiation of UI components
textView = findViewById(R.id.whether_decoded);
imageView = findViewById(R.id.imageview);
message = findViewById(R.id.message);
secret_key = findViewById(R.id.secret_key);
Button choose_image_button = findViewById(R.id.choose_image_button);
Button decode_button = findViewById(R.id.decode_button);
//Choose Image Button
choose_image_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ImageChooser();
}
});
//Decode Button
decode_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (filepath != null) {
//Making the ImageSteganography object
ImageSteganography imageSteganography = new
ImageSteganography(secret_key.getText().toString(),
original_image);
//Making the TextDecoding object
TextDecoding textDecoding = new TextDecoding(Decode.this, Decode.this);
//Execute Task
textDecoding.execute(imageSteganography);
}
}
});
}
private void ImageChooser() {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), SELECT_PICTURE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//Image set to imageView
if (requestCode == SELECT_PICTURE && resultCode == RESULT_OK && data != null
&& data.getData() != null) {
filepath = data.getData();
try {
original_image = MediaStore.Images.Media.getBitmap(getContentResolver(),
filepath);
imageView.setImageBitmap(original_image);
} catch (IOException e) {
Log.d(TAG, "Error : " + e);
}
}
}
@Override
public void onStartTextEncoding() {
//Whatever you want to do by the start of textDecoding
}
@Override
public void onCompleteTextEncoding(ImageSteganography result) {
//By the end of textDecoding
if (result != null) {
if (!result.isDecoded())
textView.setText("No message found");
else {
if (!result.isSecretKeyWrong()) {
textView.setText("Decoded");
message.setText("" + result.getMessage());
} else {
textView.setText("Wrong secret key");
}
}
} else {
textView.setText("Select Image First");
}
}
}

Outputs
Advantages Of Image Stegnography:

 It is used in the way of hiding not the information but the password to reach that information.
 Difficult to detect. Only receiver can detect.
 Can be applied differentely in digital image, audio and video file.
 It can be done faster with the large number of softwares
➢ Conclusion:-
As steganography becomes more widely used in computing, there are issues that
need to be resolved. There are a wide variety of different techniques with their own
advantages and disadvantages. Many currently used techniques are not robust enough
to prevent detection and removal of embedded data. The use of benchmarking to
evaluate techniques should become more common and a more standard definition of
robustness is required to help overcome this. For a system to be considered robust it
should have the following properties: 1) The quality of the media should not noticeably
degrade upon addition of a secret data. 2) Secret data should be undetectable without
secret knowledge, typically the key. 3) If multiple data are present, they should not
interfere with each other. 4) The secret data should survive attacks that don’t degrade
the perceived quality of the work. This work presents a scheme that can transmit large
quantities of secret information and provide secure communication between two
communication parties. Both steganography and cryptography can be woven into this
scheme to make the detection more complicated. Any kind of text data can be employed
as secret msg. The secret message employing the concept of steganography is sent over
the network. In addition, the proposed procedure is simple and easy to implement. Also,
the developed system has many practical, personal and militaristic applications for both
point-to-point and point-to multi- point communications.

➢ References:-
[1] Feng, J.B., Lin, I.C., Tsai, C.S., Chu, Y.P., 2006. Reversible watermarking: current
status and key issues. International Journal of Network Security 2 (May), 161–170. [2]
C. K. Chan, L. M. Cheng, “Hiding data in image by simple LSB substitution”, pattern
recognition, Vol. 37, No. 3, 2004, pp. 469-474.

[2] R. Chandramouli, N. Memon, “Analysis of LSB Based Image Steganography Tech-


niques”, IEEE pp. 1019-1022,2001.
[3] Jhukkj F. Hartung and M. Kutte \"Information hiding-a survey, \" Proceedings of
the IEEE: Special Issue on Identification and Protection of Multimedia Content,
Volume: 87 Issue:7, pp. I062-I078, July. 1999.
[4] Nidhi Sharma, Manu Devi, “Improved Detection of Least Significant Bit
Steganography Algorithms in Color and Gray Scale Images,” Proceedings of 2014
RAECS UIET Panjab University Chandigarh,06-08, March 2014.
[5] Padmini.K, Champakamala.B.S, Radhika.D. K Asst Professors, Department of
TCE, Don Bosco Institute of Technology, Bangalore, “Least Significant Bit algorithm
for image steganography “India International Journal of Advanced Computer
Technology(IJACT), Volume 3,Number 4.
[6] Kaur Jaspreet and Singh Sandeep “Odd-Even Mes-sage Bit Sequence Based Image
Steganography”, (IJC SIT) International Journal of Computer Science and Information
Technologies, Vol. 6 (4) , 2015, 3930-3932.
[7] Wang, H & Wang, S, “Cyber warfare: Steganography vs. Steganalysis”,
Communications of the ACM, 47:10, October 2004.
[8] Morkel T., Eloff J. H. P., and Olivier M. S., “An Overview of Image
Steganography”, Information and Computer Security Architecture (ICSA) Research
Group, University of Pretoria, South Africa, 2005.
[9] E. L. Hall. Computer Image Processing and Recognition. New York: Academic
Press, 1979.
[10] J. Burns. Developing Secure Mobile Application. ISEC Partners, October 2008.
https://www.isecpartners.com/files/iSEC_Securing_Android_Apps.pdf, accessed
November 2010.
Annexure – VI

Micro Project Evaluation Sheet


Name of Student: Akshay Bhandwalkar Enrollment No: 2107110561
Name of Program: Information Technology. Semester: VI
Course Title: MAD Course Code: 22617
Title of Micro Project: “Android Application for Image Steganography using Android Studio”

Poor Average Good Excellent


Sr Sub
Characteristic to be Assessed Marks Marks Marks Marks
No Total
(1-3) (4-5) (6-8) (9-10)
(A) Process and Product Assessment (6 Marks)
1 Relevance to the Course
2 Literature Review/Information Collection
3 Completion of the Target as per Project Proposal
4 Analysis of Data & Representation
5 Quality of Prototype/Model
6 Report Preparation
(B) Individual Presentation/Viva (4 Marks)
Presentation
8 Viva

(A) (B)
Total Marks
Process and Product Assessment Individual Presentation/Viva
(10 Marks)
(6 Marks) (4 Marks)

Comments/Suggestions about Teamwork/Leadership/Inter-personal


Communication (if any)
…………………………………..………………………………………………………………
Name & Designation of Course Teacher: Prof. Shital Khote Lecturer
Dated Signature:

You might also like