#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include <Windows.h>
#include<stdio.h>
using namespace std;
#include<cstdlib>
#include<cmath>
#include<iostream>
#include <Windows.h>
#include<stdio.h>
using namespace std;
char buf[51200000];
typedef struct tagIMAGEDATA
{
BYTE blue;
BYTE green;
BYTE red;
}IMAGEDATA;
{
BYTE blue;
BYTE green;
BYTE red;
}IMAGEDATA;
BITMAPFILEHEADER strHead;
BITMAPINFOHEADER strInfo;
BITMAPINFOHEADER strInfo;
char* DEbuffer;
IMAGEDATA *imagedata;
IMAGEDATA *imagedataRot=NULL;
IMAGEDATA *imagedataRot=NULL;
BITMAPFILEHEADER filehead;
BITMAPINFOHEADER infohead;
RGBQUAD strPla[256];
RGBQUAD *bmprgbquad;
int width;
int height;
BITMAPINFOHEADER infohead;
RGBQUAD strPla[256];
RGBQUAD *bmprgbquad;
int width;
int height;
FILE *fp;
FILE *fw;
FILE *fw;
char* buffer=(char*)malloc(100*sizeof(char));
BYTE* data=NULL;
int calSizeOfString()
{
int cnt=0;
for(int i=0;true;i++)
{
if(*(buffer+i)=='\0')
{
cnt=i;
break;
}
}
return cnt;
}
BYTE* data=NULL;
int calSizeOfString()
{
int cnt=0;
for(int i=0;true;i++)
{
if(*(buffer+i)=='\0')
{
cnt=i;
break;
}
}
return cnt;
}
bool HideInformation(int length)
{
cout<<sizeof(*data)<<endl;
unsigned int OpAND[8]={128,64,32,16,8,4,2,1};
char tempBuffer;
if(length==0)
return false;
{
cout<<sizeof(*data)<<endl;
unsigned int OpAND[8]={128,64,32,16,8,4,2,1};
char tempBuffer;
if(length==0)
return false;
while(length>0)
{
cout<<"cnt"<<endl;
{
cout<<"cnt"<<endl;
for(int i=0;i<8;i++)
{
if(((tempBuffer=(*buffer))&OpAND[i])==0)//判断最高byte是0还是1
{
if((*data)%2!=0)//判断作为隐藏载体的字节最低位是不是和要被隐藏的最高byte一样是0或者1
*data=(*data)-1;
}
else
{
if((*data)%2!=1)
*data=(*data)+1;
}
data++;
}
buffer++;
length--;
}
{
if(((tempBuffer=(*buffer))&OpAND[i])==0)//判断最高byte是0还是1
{
if((*data)%2!=0)//判断作为隐藏载体的字节最低位是不是和要被隐藏的最高byte一样是0或者1
*data=(*data)-1;
}
else
{
if((*data)%2!=1)
*data=(*data)+1;
}
data++;
}
buffer++;
length--;
}
return true;
}
}
void hide(char fileName[90]){
fp=fopen(fileName,"rb+");
fread(&filehead,sizeof(BITMAPFILEHEADER),1,fp);
fread(&infohead,sizeof(BITMAPINFOHEADER),1,fp);
fread(&filehead,sizeof(BITMAPFILEHEADER),1,fp);
fread(&infohead,sizeof(BITMAPINFOHEADER),1,fp);
for(int i=0;i<infohead.biClrUsed;i++)
{
fread(&strPla[i],sizeof(strPla[i]),1,fp);
}
{
fread(&strPla[i],sizeof(strPla[i]),1,fp);
}
width=infohead.biWidth;
height=infohead.biHeight;
width=(width*sizeof(IMAGEDATA)+3)/4*4;
height=infohead.biHeight;
width=(width*sizeof(IMAGEDATA)+3)/4*4;
imagedata=(IMAGEDATA*)malloc(sizeof(IMAGEDATA)*width*height);
fread(im
fread(im