Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 8ebab7d

Browse files
Key sensivity test is completed
1 parent 0aad1b7 commit 8ebab7d

File tree

4 files changed

+146
-0
lines changed

4 files changed

+146
-0
lines changed

‎Image/test_encrypted_image1.jpg‎

258 KB
Loading[フレーム]

‎Image/test_encrypted_image2.jpg‎

258 KB
Loading[フレーム]

‎key_sensivity‎

93.4 KB
Binary file not shown.

‎key_sensivity.cpp‎

Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
#include <bits/stdc++.h>
2+
#include <opencv2/opencv.hpp>
3+
4+
using namespace cv;
5+
using namespace std;
6+
7+
const int MAX=1e4+79;
8+
9+
/**
10+
u is the control parameter for logistic chaotic map,also known as population rate
11+
Here u is taken 3.94
12+
x is the vector that contain the value generated by chaotic map
13+
The initial value of the logistic chaotic map is 0.4
14+
*/
15+
16+
int main()
17+
{
18+
Mat image,encImage1,encImage2,tempImage;
19+
int i,l;
20+
double u1=3.94001,u2=3.94002,percenDiff,count=0;
21+
vector<pair<double,int >> x1,x2;
22+
Vec<unsigned char, 3> pixel,pixel1;
23+
24+
25+
image = imread("Image/sample_image_grey.jpg", 0 );
26+
if ( !image.data )
27+
{
28+
cout<<"No image data \n";
29+
return -1;
30+
}
31+
32+
x1.push_back({0.400001,0});
33+
x2.push_back({0.400002,0});
34+
35+
// cout<<u1<<endl<<u2<<endl;
36+
// cout<<x1[0].first<<endl<<x2[0].first<<endl;
37+
38+
double temp;
39+
for (int i = 1; i <= 511; ++i){
40+
temp=u1*x1[i-1].first*(1-x1[i-1].first);
41+
x1.push_back({temp,i});
42+
}
43+
44+
for (int i = 1; i <= 511; ++i){
45+
temp=u2*x2[i-1].first*(1-x2[i-1].first);
46+
x2.push_back({temp,i});
47+
}
48+
49+
sort(x1.begin(), x1.end());
50+
sort(x2.begin(), x2.end());
51+
52+
imshow("Original image", image);
53+
waitKey(0);
54+
55+
i=0;
56+
tempImage=image;
57+
for(int r = 0; r < image.rows; ++r) {
58+
for(int c = 0; c < image.cols; ++c) {
59+
if(i>511)
60+
i=0;
61+
int temps= x1[i].second;
62+
63+
pixel= image.at<Vec3b>(r,temps);
64+
image.at<Vec3b>(r,temps)=image.at<Vec3b>(r,c);
65+
image.at<Vec3b>(r,c)=pixel;
66+
67+
i++;
68+
}
69+
}
70+
71+
for(int r = 0; r < image.rows; ++r) {
72+
for(int c = 0; c < image.cols; ++c) {
73+
if(i>100){
74+
i=1;
75+
}
76+
l=x1[i].first*MAX;
77+
l=l%255;
78+
image.at<Vec3b>(r,c)[0]=image.at<Vec3b>(r,c)[0]^l;
79+
image.at<Vec3b>(r,c)[1]=image.at<Vec3b>(r,c)[1]^l;
80+
image.at<Vec3b>(r,c)[2]=image.at<Vec3b>(r,c)[2]^l;
81+
i++;
82+
}
83+
}
84+
encImage1=image;
85+
image=tempImage;
86+
87+
i=0;
88+
tempImage=image;
89+
for(int r = 0; r < image.rows; ++r) {
90+
for(int c = 0; c < image.cols; ++c) {
91+
if(i>511)
92+
i=0;
93+
int temps= x2[i].second;
94+
95+
pixel= image.at<Vec3b>(r,temps);
96+
image.at<Vec3b>(r,temps)=image.at<Vec3b>(r,c);
97+
image.at<Vec3b>(r,c)=pixel;
98+
99+
i++;
100+
}
101+
}
102+
103+
for(int r = 0; r < image.rows; ++r) {
104+
for(int c = 0; c < image.cols; ++c) {
105+
if(i>100){
106+
i=1;
107+
}
108+
l=x2[i].first*MAX;
109+
l=l%255;
110+
image.at<Vec3b>(r,c)[0]=image.at<Vec3b>(r,c)[0]^l;
111+
image.at<Vec3b>(r,c)[1]=image.at<Vec3b>(r,c)[1]^l;
112+
image.at<Vec3b>(r,c)[2]=image.at<Vec3b>(r,c)[2]^l;
113+
i++;
114+
}
115+
}
116+
117+
encImage2=image;
118+
image=tempImage;
119+
120+
for(int r = 0; r < image.rows; ++r) {
121+
for(int c = 0; c < image.cols; ++c) {
122+
pixel= encImage1.at<Vec3b>(r,c);
123+
pixel1= encImage2.at<Vec3b>(r,c);
124+
125+
if(pixel[0] ==pixel[0])
126+
count +=1;
127+
if(pixel[1] ==pixel[1])
128+
count +=1;
129+
if(pixel[2] ==pixel[2])
130+
count +=1;
131+
}
132+
}
133+
134+
percenDiff=count/(512*512*3)*100;
135+
cout<<"The first image and second encrypted image are "<<percenDiff<<"% Different"<<endl;
136+
137+
imwrite("Image/test_encrypted_image1.jpg",encImage1);
138+
imshow("Encrypted test image 1", encImage1);
139+
waitKey(0);
140+
imwrite("Image/test_encrypted_image2.jpg",encImage2);
141+
imshow("Encrypted test image 2", encImage2);
142+
waitKey(0);
143+
144+
return 0;
145+
146+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /