📄 truecolorto8bitview.cpp
字号:
int k = lo-1;
int l= 1;
int *row = &k;
int *colomn = &l;
val[0][0]=0.7;
for (i=0;i<time+lo-1;i++)
val[0][i+1]=4*val[0][i]*(1-val[0][i]);
for (j=0;j<(space-67);j++)
val[j+1][0]=3.9*val[j][0]*(1-val[j][0]);
for(n=1;n<time+lo;n++)
for(i=1;i<lo;i++)
{
val[i][n]=(1-ep)*fun(val[i][n-1])+ep*fun(val[i-1][n-1]);
}
for (n=1;n<(time-lo)/2;n++) //???????????error
{
for(i=lo-1;i<(space-67);i++)
{
val[i][n]=(1-ep)*fun(val[i][n-1])+ep*fun(val[i-1][n-1]);
}
}
//DES encryption data
// for (int n=0; n<10; n++)
// UINT32 key= int (x*1000000000);
// unsigned char * pkey= (unsigned char *)&key;
unsigned char * despdata=pdata;
// memset(pkey,1,4);
// pkey;
//UINT32 * pdencryt;
///while(pdata!=NULL)
des_enc(&dc,despdata,blocks,key,val,time,space,row,colomn);
//pkey-=4;
//将得到的数据写进文件中
if(file.Open("temp.bmp",CFile::modeCreate|CFile::modeWrite,NULL))
{
// bf.bfOffBits=bf.bfOffBits+1024;
// bf.bfSize=bf.bfOffBits+nsize;
file.Write(&bf,sizeof(BITMAPFILEHEADER));
file.Write(binfoin,sizeof(BITMAPINFOHEADER));//+256*sizeof(RGBQUAD)+10);
file.Write(pdata,nsize);
file.Close();
}
free(binfoin);
// free(binfoout);
free(pdata);
//free(pdata8);
HBITMAP hBitmap=(HBITMAP)LoadImage(NULL,"temp.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);
// CDC tempDC;
if(hBitmap==NULL) return;
bitmap.DeleteObject();
bitmap.Attach(hBitmap);
bitmap.GetObject(sizeof(BITMAP),&bm);
bShow=true;
Invalidate();
}
//decryption
void CTruecolorto8bitView::OnDESDecrypt()
{
des_ctx dc;
// TODO: Add your command handler code here
// TODO: Add your command handler code here
//加载位图文件
BITMAPFILEHEADER bf;
BITMAPINFO *binfoin;//,*binfoout;
//创建两个信息头
CFile file;
if(!file.Open(str,CFile::modeRead,NULL)) return;
binfoin=(BITMAPINFO *)malloc(sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD)+10);
// binfoout=(BITMAPINFO *)malloc(sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD)+10);
file.Read(&bf,sizeof(BITMAPFILEHEADER));
file.Read(binfoin,sizeof(BITMAPINFOHEADER));
int nline=((binfoin->bmiHeader.biWidth* binfoin->bmiHeader.biBitCount+31)/8) /4*4;
int nsize=nline*(binfoin->bmiHeader.biHeight);
// int nline8=((binfoin->bmiHeader.biWidth* 8+31)/8) /4*4;
// int nsize8=nline8*(binfoin->bmiHeader.biHeight);
int space=binfoin->bmiHeader.biHeight;
int time=nline;
unsigned char *pdata;//,*pdata8;
//为源数据开辟缓冲区
pdata=(unsigned char *)malloc(nsize+nline+10);//注意这里必须申请一块大一点的空间,不然会益处
//为目标数据开辟缓冲区
// pdata8=(unsigned char *)malloc(nsize8+10);
file.Read(pdata,nsize);
file.Close();
int blocks=nsize/8;
unsigned char key[8];
int i, j, n;
int lo=80;
double ep=0.8;
int k = lo-1;
int l= 1;
int *row = &k;
int *colomn = &l;
val[0][0]=0.7;
for (i=0;i<time+lo-1;i++)
val[0][i+1]=4*val[0][i]*(1-val[0][i]);
for (j=0;j<(space-67);j++)
val[j+1][0]=3.9*val[j][0]*(1-val[j][0]);
for(n=1;n<time+lo;n++)
for(i=1;i<lo;i++)
{
val[i][n]=(1-ep)*fun(val[i][n-1])+ep*fun(val[i-1][n-1]);
}
for (n=1;n<(time-lo)/2;n++) //???????????error
{
for(i=lo-1;i<(space-67);i++)
{
val[i][n]=(1-ep)*fun(val[i][n-1])+ep*fun(val[i-1][n-1]);
}
}
//DES encryption data
// for (int n=0; n<10; n++)
// UINT32 key= int (x*1000000000);
// unsigned char * pkey= (unsigned char *)&key;
unsigned char * despdata=pdata;
// memset(pkey,1,4);
// pkey;
//UINT32 * pdencryt;
///while(pdata!=NULL)
des_dec(&dc,despdata,blocks,key,val,time,space,row,colomn);
//pkey-=4;
//将得到的数据写进文件中
if(file.Open("temp.bmp",CFile::modeCreate|CFile::modeWrite,NULL))
{
// bf.bfOffBits=bf.bfOffBits+1024;
// bf.bfSize=bf.bfOffBits+nsize;
file.Write(&bf,sizeof(BITMAPFILEHEADER));
file.Write(binfoin,sizeof(BITMAPINFOHEADER));//+256*sizeof(RGBQUAD)+10);
file.Write(pdata,nsize);
file.Close();
}
free(binfoin);
// free(binfoout);
free(pdata);
//free(pdata8);
HBITMAP hBitmap=(HBITMAP)LoadImage(NULL,"temp.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);
// CDC tempDC;
if(hBitmap==NULL) return;
bitmap.DeleteObject();
bitmap.Attach(hBitmap);
bitmap.GetObject(sizeof(BITMAP),&bm);
bShow=true;
Invalidate();
}
void CTruecolorto8bitView::OnOEncrypt()
{
// TODO: Add your command handler code here
//加载位图文件
BITMAPFILEHEADER bf;
BITMAPINFO *binfoin;//,*binfoout;
//创建两个信息头
CFile file;
if(!file.Open(str,CFile::modeRead,NULL)) return;
binfoin=(BITMAPINFO *)malloc(sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD)+10);
// binfoout=(BITMAPINFO *)malloc(sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD)+10);
file.Read(&bf,sizeof(BITMAPFILEHEADER));
file.Read(binfoin,sizeof(BITMAPINFOHEADER));
int nline=((binfoin->bmiHeader.biWidth* binfoin->bmiHeader.biBitCount+31)/8) /4*4;
TRACE("Width=%d,Height=%d,BitCount=%d\n",binfoin->bmiHeader.biWidth,binfoin->bmiHeader.biHeight,binfoin->bmiHeader.biBitCount); //Width=640,BitCount=24
int nsize=nline*(binfoin->bmiHeader.biHeight);
TRACE("the size of image in bytes=%d",nsize);
//OCOML
int space=binfoin->bmiHeader.biHeight;
int time=nline;
TRACE("space=%d,time=%d\n",space,time);
unsigned char *pdata;//,*pdata8;
//为源数据开辟缓冲区
pdata=(unsigned char *)malloc(nsize+nline+10);//注意这里必须申请一块大一点的空间,不然会益处
//为目标数据开辟缓冲区
// pdata8=(unsigned char *)malloc(nsize8+10);
file.Read(pdata,nsize);
file.Close();
//ocoml origin lattice
int i, j, n;
int lo=80;
double ep=0.8;
val[0][0]=0.7;
for (i=0;i<time+lo-1;i++)
val[0][i+1]=4*val[0][i]*(1-val[0][i]);
for (j=0;j<(space-67);j++)
val[j+1][0]=3.9*val[j][0]*(1-val[j][0]);
for(n=1;n<time+lo;n++)
for(i=1;i<lo;i++)
{
val[i][n]=(1-ep)*fun(val[i][n-1])+ep*fun(val[i-1][n-1]);
}
// data to be encrypted
unsigned char * despdata= (unsigned char *) pdata;
// UINT32 * despdata=(UINT32 *)pdata;
for (n=1;n<(time-lo)/2;n++) //???????????error
{
for(i=lo-1;i<(space-67);i++)
{
val[i][n]=(1-ep)*fun(val[i][n-1])+ep*fun(val[i-1][n-1]);
UINT32 key= int (val[i][n]*1000000000);
unsigned char * pkey= (unsigned char *)&key;
if(despdata==NULL)
break;
for ( j=0;j<3;j++)
{
if(despdata==NULL)
break;
(*despdata)^=(*pkey);
pkey++;
despdata++;
}
/*(*despdata)^=key;
despdata++; */
}
//pkey-=4;
if(despdata==NULL)
break;
// TRACE("i=%d,n=%d \n",i,n);
}
//将得到的数据写进文件中
if(file.Open("temp.bmp",CFile::modeCreate|CFile::modeWrite,NULL))
{
// bf.bfOffBits=bf.bfOffBits+1024;
// bf.bfSize=bf.bfOffBits+nsize;
file.Write(&bf,sizeof(BITMAPFILEHEADER));
file.Write(binfoin,sizeof(BITMAPINFOHEADER));//+256*sizeof(RGBQUAD)+10);
file.Write(pdata,nsize);
file.Close();
}
free(binfoin);
// free(binfoout);
free(pdata);
//free(pdata8);
HBITMAP hBitmap=(HBITMAP)LoadImage(NULL,"temp.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);
// CDC tempDC;
if(hBitmap==NULL) return;
bitmap.DeleteObject();
bitmap.Attach(hBitmap);
bitmap.GetObject(sizeof(BITMAP),&bm);
bShow=true;
Invalidate();
}
void CTruecolorto8bitView::OnCOEncrypt()
{
// TODO: Add your command handler code here
// TODO: Add your command handler code here
int N=4;
//加载位图文件
BITMAPFILEHEADER bf;
BITMAPINFO *binfoin;//,*binfoout;
//创建两个信息头
CFile file;
if(!file.Open(str,CFile::modeRead,NULL)) return;
binfoin=(BITMAPINFO *)malloc(sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD)+10);
// binfoout=(BITMAPINFO *)malloc(sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD)+10);
file.Read(&bf,sizeof(BITMAPFILEHEADER));
file.Read(binfoin,sizeof(BITMAPINFOHEADER));
// int nline=((binfoin->bmiHeader.biWidth* binfoin->bmiHeader.biBitCount+31)/8) /4*4;
int nline=binfoin->bmiHeader.biWidth*3;
TRACE("Width=%d,Height=%d,BitCount=%d\n",binfoin->bmiHeader.biWidth,binfoin->bmiHeader.biHeight,binfoin->bmiHeader.biBitCount); //Width=640,BitCount=24
int nsize=binfoin->bmiHeader.biSizeImage;
TRACE("the size of image in bytes=%d",nsize);
//OCOML
int space=binfoin->bmiHeader.biHeight;
int time=binfoin->bmiHeader.biWidth;
TRACE("space=%d,time=%d\n",space,time);
unsigned char *pdata;//,*pdata8;
//为源数据开辟缓冲区
pdata=(unsigned char *)malloc(nsize+nline+10);//注意这里必须申请一块大一点的空间,不然会益处
//为目标数据开辟缓冲区
// pdata8=(unsigned char *)malloc(nsize8+10);
file.Read(pdata,nsize);
file.Close();
//ocoml origin lattice
int i, j, n, k;
int lo=80;
double ep=0.8;
val[0][0]=0.7;
for (i=0;i<time+lo-1;i++)
val[0][i+1]=4*val[0][i]*(1-val[0][i]);
for (j=0;j<space;j++)
val[j+1][0]=3.9*val[j][0]*(1-val[j][0]);
for(n=1;n<time+lo;n++)
for(i=1;i<space;i++)
{
val[i][n]=(1-ep)*fun(val[i][n-1])+ep*fun(val[i-1][n-1]);
}
// data to be encrypted
unsigned char * despdata= (unsigned char *) pdata;
// UINT32 * despdata=(UINT32 *)pdata;
char modul[3];
for(i=1;i<=space+1;i++)
{
for (n=1+lo;n<1+lo+time/N;n++) //????? divide by N
{
val[i][n]=(1-ep)*fun(val[i][n-1])+ep*fun(val[i-1][n-1]);
UINT32 key= int (val[i][n]*1000000000);
unsigned char * pkey= (unsigned char *)&key;
if(despdata==NULL)
break;
for ( j=0;j<3;j++)
{
if(despdata==NULL)
break;
(*despdata)^=(*pkey);
modul[j]=*despdata;
pkey++;
despdata++;
if(despdata==NULL)
break;
}
/*8*8 module full
for (k=0;k<3;k++)
{
*despdata=*(despdata+8);
despdata++;
}
despdata-=3; */
for (k=0; k<N-1; k++)
{
for(j=0; j<3; j++)
{
*despdata=modul[j];
despdata++;
}
if(despdata==NULL)
break;
}
}
//pkey-=4;
if(despdata==NULL)
break;
// TRACE("i=%d,n=%d \n",i,n);
}
//将得到的数据写进文件中
if(file.Open("temp.bmp",CFile::modeCreate|CFile::modeWrite,NULL))
{
// binfoin->bmiHeader.biHeight/=8;
// binfoin->bmiHeader.biWidth/=8;
file.Write(&bf,sizeof(BITMAPFILEHEADER));
file.Write(binfoin,sizeof(BITMAPINFOHEADER));//+256*sizeof(RGBQUAD)+10);
// file.Write(pdata,24*80*60);
file.Write(pdata,nsize);
file.Close();
}
free(binfoin);
// free(binfoout);
free(pdata);
//free(pdata8);
HBITMAP hBitmap=(HBITMAP)LoadImage(NULL,"temp.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);
// CDC tempDC;
if(hBitmap==NULL) return;
bitmap.DeleteObject();
bitmap.Attach(hBitmap);
bitmap.GetObject(sizeof(BITMAP),&bm);
bShow=true;
Invalidate();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -