⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 infohidedoc.cpp

📁 该电话薄使用的是数据库
💻 CPP
📖 第 1 页 / 共 4 页
字号:
		C[i]*=2.0;
	}
}

void CInfoHideDoc::FCT(float *x, unsigned int *L, float *C, int m, int N)
{
	int NK1,NK2,i,j,k,kk,ip,incr,L1,k1,k2,iter;
	float T;
	NK1=N>>1;
	T=x[2];
	x[2]=x[1];
	x[1]=T;
	k1=2;
	k2=4;
	for(i=1;i<(NK1-1);i++)
	{
		T=x[k2];
		for(j=0;j<=(k2-k1);j++)
		{
			x[k2-j]=x[k2-j-1];
		}
		x[k1]=T;
		k1++;
		k2+=2;
		
	}
	NK2=N-1;
	for(i=0;i<(NK1>>1);i++)
	{
		T=x[NK2-i];
		x[NK2-i]=x[NK1+i];
		x[NK1+i]=T;
	}
	
	ip=NK1;
	kk=0;
	incr=N;
	for(iter=0;iter<m;iter++)
	{
		for(k=0;k<ip;k++)
		{
			for(j=k;j<N;j+=incr)
			{
				i=j+ip;
				T=x[j];
				x[j]=T+x[i];
				x[i]=T-x[i];
				x[i]*=C[kk];
			}
			kk++;
		}
		ip>>=1;
		incr>>=1;
		
	}
	for(i=0;i<(N-1);i++)
	{
		if(i<=(int)L[i])
			continue;
		else
		{
			T=x[i];
			x[i]=x[L[i]];
			x[L[i]]=T;
		}
	}
	for(i=1;i<NK1;i++)	
		x[i]*=0.5;
	NK1=(N>>2);	
	NK2=(N>>1);
	kk=1;
	for(iter=1;iter<m;iter++)
	{
		kk<<=1;
		L1=kk-1;
		for(k=1;k<=L1;k++)
			for(i=0;i<NK1;i++)
				x[NK1+NK2*k+i]=x[NK1+NK2*k+i]-x[NK1+NK2*(k-1)+i];
			NK1>>=1;
			NK2>>=1;
	}
	x[0]=x[0]/(float)sqrt(N);
	for(i=1;i<N;i++)
		x[i]=(float)(x[i]*1.414/(float)sqrt(N));
}

void CInfoHideDoc::SetXY(int x, int y, BYTE val,int space)
{
	y=m_size.cy-y-1;
	lpbits[(y*m_size.cy+x)*3+space]=val;
	if(lpbits[(y*m_size.cy+x)*3+space]>255)lpbits[(y*m_size.cy+x)*3+space]=255;
	if(lpbits[(y*m_size.cy+x)*3+space]<0)lpbits[(y*m_size.cy+x)*3+space]=0;
}

void CInfoHideDoc::WTSINV(float *C, int m, int N)
{
	int NK,i,k,iter,LK;
	double PI;
	PI=3.14159;
	NK=4;
	k=0;
	LK=1;
	for(iter=0;iter<m;iter++)
	{
		for(i=0;i<LK;i++)
		{
			C[k]=(float)(1.0/(float)cos((PI*(4*i+1))/NK));
			k++;
		}
		NK<<=1;
		LK<<=1;
		
	}
	
	for(i=1;i<(N-1);i++)
		C[i]/=2.0;
}

void CInfoHideDoc::IFCT(float *x, unsigned int *L, float *C, int m, int N)
{
	int NK1,NK2,i,j,k,kk,ip,incr,L1,iter;
	float T;
	x[0]=x[0]*(float)sqrt(N);
	for(i=1;i<N;i++)
		x[i]=(float)(x[i]*(float)sqrt(N)/1.4140);
	
	NK1=1;
	NK2=2;
	kk=1;
	for(i=0;i<m;i++)
		kk*=2;
	for(iter=1;iter<m;iter++)
	{
		kk>>=1;
		L1=kk-1;
		for(k=L1;k>=1;k--)
			for(i=0;i<NK1;i++)
				x[NK1+k*NK2+i]=x[NK1+k*NK2+i]+x[NK1+(k-1)*NK2+i];
			NK1<<=1;
			NK2<<=1;
			
	}
	NK1=N>>1;
	for(i=1;i<NK1;i++)
		x[i]*=2.0;
	
	
	for(i=0;i<(N-1);i++)
	{
		if(i<(int)L[i])
			continue;
		else
		{
			T=x[i];
			x[i]=x[L[i]];
			x[L[i]]=T;
		}
	}
	
	ip=1;
	kk=0;
	incr=2;
	for(iter=0;iter<m;iter++)
	{
		for(k=0;k<ip;k++)
		{
			for(j=k;j<N;j+=incr)
			{
				i=j+ip;
				T=x[j];
				x[i]=x[i]*C[kk];
				x[j]=T+x[i];
				x[i]=T-x[i];
				
			}
			kk++;
		}
		ip<<=1;
		incr<<=1;
		
		
	}
	
	kk=1;
	for(i=1;i<(N>>1);i++)
	{
		T=x[N-1];
		k=1;
		for(j=kk;j<N;j++)
		{
			x[N-k]=x[N-k-1];
			k++;
		}
		x[kk]=T;
		kk+=2;
	}
	
	for(i=0;i<N;i++)
		x[i]=x[i]/(float)(N);
}

void CInfoHideDoc::OnLsbE() 
{
	// TODO: Add your command handler code here
	TypeChoice tc_pdlg;
	if(tc_pdlg.DoModal()==IDOK)
	{
		if(tc_pdlg.m_wenzi)
		{
			INPUT_MW mw_pdlg;
			if(mw_pdlg.DoModal()==IDOK)
			{
				BYTE len=mw_pdlg.m_miwen.GetLength();
				BYTE *cchar;
				cchar=new BYTE[len*8];
				int i;
				for(i=0;i<len;i++)
				{
					cchar[8*i]=mw_pdlg.m_miwen[i]%2;
					cchar[8*i+1]=(mw_pdlg.m_miwen[i]>>1)%2;
					cchar[8*i+2]=(mw_pdlg.m_miwen[i]>>2)%2;
					cchar[8*i+3]=(mw_pdlg.m_miwen[i]>>3)%2;
					cchar[8*i+4]=(mw_pdlg.m_miwen[i]>>4)%2;
					cchar[8*i+5]=(mw_pdlg.m_miwen[i]>>5)%2;
					cchar[8*i+6]=(mw_pdlg.m_miwen[i]>>6)%2;
					cchar[8*i+7]=(mw_pdlg.m_miwen[i]>>7)%2;
				}
				
				lpbits[(m_size.cx*m_size.cy-1)*3]=(lpbits[(m_size.cx*m_size.cy-1)*3]>>1<<1)+len%2;
				lpbits[(m_size.cx*m_size.cy-2)*3]=(lpbits[(m_size.cx*m_size.cy-2)*3]>>1<<1)+(len>>1)%2;
				lpbits[(m_size.cx*m_size.cy-3)*3]=(lpbits[(m_size.cx*m_size.cy-3)*3]>>1<<1)+(len>>2)%2;
				lpbits[(m_size.cx*m_size.cy-4)*3]=(lpbits[(m_size.cx*m_size.cy-4)*3]>>1<<1)+(len>>3)%2;
				lpbits[(m_size.cx*m_size.cy-5)*3]=(lpbits[(m_size.cx*m_size.cy-5)*3]>>1<<1)+(len>>4)%2;
				lpbits[(m_size.cx*m_size.cy-6)*3]=(lpbits[(m_size.cx*m_size.cy-6)*3]>>1<<1)+(len>>5)%2;
				lpbits[(m_size.cx*m_size.cy-7)*3]=(lpbits[(m_size.cx*m_size.cy-7)*3]>>1<<1)+(len>>6)%2;
				lpbits[(m_size.cx*m_size.cy-8)*3]=(lpbits[(m_size.cx*m_size.cy-8)*3]>>1<<1)+(len>>7)%2;

				len=len*8;
				i=0;
				while(1){
					lpbits[i*3]=(lpbits[i*3]>>1<<1)+cchar[i];
					i=i+1;
					if(i==len)break;
				}
				free(cchar);
			}
			UpdateAllViews(NULL);
			SetModifiedFlag();
		}
		
		if(tc_pdlg.m_tuxiang)
		{
			JM_PIC jp_pdlg;
			if(jp_pdlg.DoModal()==IDOK)
			{
				CFile fp;//指定的位图文件
				fp.Open(jp_pdlg.m_picinfo,CFile::modeRead);

				fp.Read((LPSTR)&mm_bmh,sizeof(BITMAPFILEHEADER));
				if(mm_bmh.bfType!=0x4D42)//判断文件是否为位图
				{
					AfxMessageBox("不是合法的文件!");
					fp.Close();
					return;
				}
				
				DWORD dwBitsSize=mm_bmh.bfSize;
				mm_lpbmi=(BITMAPINFO*)GlobalAllocPtr(GHND,dwBitsSize-sizeof(BITMAPFILEHEADER));
				
				fp.Read(mm_lpbmi,dwBitsSize-sizeof(BITMAPFILEHEADER));
				
				if((mm_lpbmi->bmiHeader.biBitCount!=24)||(mm_lpbmi->bmiHeader.biCompression!=BI_RGB))
				{//判断该位图是否为24位非压缩位图
					AfxMessageBox("该位图不是我们需要的24位位图!");
					GlobalFreePtr(mm_lpbmi);
					mm_lpbmi=NULL;
					fp.Close();
					return;
				}
				
				mm_lpbits=(LPBYTE)mm_lpbmi+sizeof(BITMAPINFOHEADER);
				
				mm_m_size.cx=mm_lpbmi->bmiHeader.biWidth;//得到位图宽度
				mm_m_size.cy=mm_lpbmi->bmiHeader.biHeight;//得到位图高度
				
				fp.Close();//关闭文件
					
				int b_times;//求得载体图像与秘密图像的比例
				b_times=m_size.cx/mm_m_size.cx;

				for(int i=0;i<mm_m_size.cy;i++)
					for(int j=0;j<mm_m_size.cx;j++)
					{
						lpbits[((i*mm_m_size.cx+j)*8)*3]=(lpbits[((i*mm_m_size.cx+j)*8)*3]>>1<<1)
							+mm_lpbits[(i*mm_m_size.cx+j)*3]%2;
						lpbits[((i*mm_m_size.cx+j)*8+1)*3]=(lpbits[((i*mm_m_size.cx+j)*8+1)*3]>>1<<1)
							+(mm_lpbits[(i*mm_m_size.cx+j)*3]>>1)%2;
						lpbits[((i*mm_m_size.cx+j)*8+2)*3]=(lpbits[((i*mm_m_size.cx+j)*8+2)*3]>>1<<1)
							+(mm_lpbits[(i*mm_m_size.cx+j)*3]>>2)%2;
						lpbits[((i*mm_m_size.cx+j)*8+3)*3]=(lpbits[((i*mm_m_size.cx+j)*8+3)*3]>>1<<1)
							+(mm_lpbits[(i*mm_m_size.cx+j)*3]>>3)%2;
						lpbits[((i*mm_m_size.cx+j)*8+4)*3]=(lpbits[((i*mm_m_size.cx+j)*8+4)*3]>>1<<1)
							+(mm_lpbits[(i*mm_m_size.cx+j)*3]>>4)%2;
						lpbits[((i*mm_m_size.cx+j)*8+5)*3]=(lpbits[((i*mm_m_size.cx+j)*8+5)*3]>>1<<1)
							+(mm_lpbits[(i*mm_m_size.cx+j)*3]>>5)%2;
						lpbits[((i*mm_m_size.cx+j)*8+6)*3]=(lpbits[((i*mm_m_size.cx+j)*8+6)*3]>>1<<1)
							+(mm_lpbits[(i*mm_m_size.cx+j)*3]>>6)%2;
						lpbits[((i*mm_m_size.cx+j)*8+7)*3]=(lpbits[((i*mm_m_size.cx+j)*8+7)*3]>>1<<1)
							+(mm_lpbits[(i*mm_m_size.cx+j)*3]>>7)%2;

						lpbits[((i*mm_m_size.cx+j)*8)*3+1]=(lpbits[((i*mm_m_size.cx+j)*8)*3+1]>>1<<1)
							+mm_lpbits[(i*mm_m_size.cx+j)*3+1]%2;
						lpbits[((i*mm_m_size.cx+j)*8+1)*3+1]=(lpbits[((i*mm_m_size.cx+j)*8+1)*3+1]>>1<<1)
							+(mm_lpbits[(i*mm_m_size.cx+j)*3+1]>>1)%2;
						lpbits[((i*mm_m_size.cx+j)*8+2)*3+1]=(lpbits[((i*mm_m_size.cx+j)*8+2)*3+1]>>1<<1)
							+(mm_lpbits[(i*mm_m_size.cx+j)*3+1]>>2)%2;
						lpbits[((i*mm_m_size.cx+j)*8+3)*3+1]=(lpbits[((i*mm_m_size.cx+j)*8+3)*3+1]>>1<<1)
							+(mm_lpbits[(i*mm_m_size.cx+j)*3+1]>>3)%2;
						lpbits[((i*mm_m_size.cx+j)*8+4)*3+1]=(lpbits[((i*mm_m_size.cx+j)*8+4)*3+1]>>1<<1)
							+(mm_lpbits[(i*mm_m_size.cx+j)*3+1]>>4)%2;
						lpbits[((i*mm_m_size.cx+j)*8+5)*3+1]=(lpbits[((i*mm_m_size.cx+j)*8+5)*3+1]>>1<<1)
							+(mm_lpbits[(i*mm_m_size.cx+j)*3+1]>>5)%2;
						lpbits[((i*mm_m_size.cx+j)*8+6)*3+1]=(lpbits[((i*mm_m_size.cx+j)*8+6)*3+1]>>1<<1)
							+(mm_lpbits[(i*mm_m_size.cx+j)*3+1]>>6)%2;
						lpbits[((i*mm_m_size.cx+j)*8+7)*3+1]=(lpbits[((i*mm_m_size.cx+j)*8+7)*3+1]>>1<<1)
							+(mm_lpbits[(i*mm_m_size.cx+j)*3+1]>>7)%2;

						lpbits[((i*mm_m_size.cx+j)*8)*3+2]=(lpbits[((i*mm_m_size.cx+j)*8)*3+2]>>1<<1)
							+mm_lpbits[(i*mm_m_size.cx+j)*3+2]%2;
						lpbits[((i*mm_m_size.cx+j)*8+1)*3+2]=(lpbits[((i*mm_m_size.cx+j)*8+1)*3+2]>>1<<1)
							+(mm_lpbits[(i*mm_m_size.cx+j)*3+2]>>1)%2;
						lpbits[((i*mm_m_size.cx+j)*8+2)*3+2]=(lpbits[((i*mm_m_size.cx+j)*8+2)*3+2]>>1<<1)
							+(mm_lpbits[(i*mm_m_size.cx+j)*3+2]>>2)%2;
						lpbits[((i*mm_m_size.cx+j)*8+3)*3+2]=(lpbits[((i*mm_m_size.cx+j)*8+3)*3+2]>>1<<1)
							+(mm_lpbits[(i*mm_m_size.cx+j)*3+2]>>3)%2;
						lpbits[((i*mm_m_size.cx+j)*8+4)*3+2]=(lpbits[((i*mm_m_size.cx+j)*8+4)*3+2]>>1<<1)
							+(mm_lpbits[(i*mm_m_size.cx+j)*3+2]>>4)%2;
						lpbits[((i*mm_m_size.cx+j)*8+5)*3+2]=(lpbits[((i*mm_m_size.cx+j)*8+5)*3+2]>>1<<1)
							+(mm_lpbits[(i*mm_m_size.cx+j)*3+2]>>5)%2;
						lpbits[((i*mm_m_size.cx+j)*8+6)*3+2]=(lpbits[((i*mm_m_size.cx+j)*8+6)*3+2]>>1<<1)
							+(mm_lpbits[(i*mm_m_size.cx+j)*3+2]>>6)%2;
						lpbits[((i*mm_m_size.cx+j)*8+7)*3+2]=(lpbits[((i*mm_m_size.cx+j)*8+7)*3+2]>>1<<1)
							+(mm_lpbits[(i*mm_m_size.cx+j)*3+2]>>7)%2;
					}
					lpbits[(m_size.cx*m_size.cy-1)*3]=(lpbits[(m_size.cx*m_size.cy-1)*3]>>1<<1)+mm_m_size.cx%2;
					lpbits[(m_size.cx*m_size.cy-2)*3]=(lpbits[(m_size.cx*m_size.cy-2)*3]>>1<<1)+(mm_m_size.cx>>1)%2;
					lpbits[(m_size.cx*m_size.cy-3)*3]=(lpbits[(m_size.cx*m_size.cy-3)*3]>>1<<1)+(mm_m_size.cx>>2)%2;
					lpbits[(m_size.cx*m_size.cy-4)*3]=(lpbits[(m_size.cx*m_size.cy-4)*3]>>1<<1)+(mm_m_size.cx>>3)%2;
					lpbits[(m_size.cx*m_size.cy-5)*3]=(lpbits[(m_size.cx*m_size.cy-5)*3]>>1<<1)+(mm_m_size.cx>>4)%2;
					lpbits[(m_size.cx*m_size.cy-6)*3]=(lpbits[(m_size.cx*m_size.cy-6)*3]>>1<<1)+(mm_m_size.cx>>5)%2;
					lpbits[(m_size.cx*m_size.cy-7)*3]=(lpbits[(m_size.cx*m_size.cy-7)*3]>>1<<1)+(mm_m_size.cx>>6)%2;
					lpbits[(m_size.cx*m_size.cy-8)*3]=(lpbits[(m_size.cx*m_size.cy-8)*3]>>1<<1)+(mm_m_size.cx>>7)%2;	
			}
			UpdateAllViews(NULL);
			SetModifiedFlag();
		}

//声音隐藏算法暂时没做,可继续完成,原理相同
/*
		if(tc_pdlg.m_shengyin)
		{
		}
*/
	}
	UpdateAllViews(NULL);
	SetModifiedFlag();
}

void CInfoHideDoc::OnLsbD() 
{
	// TODO: Add your command handler code here
	TypeChoice tc_pdlg;
	if(tc_pdlg.DoModal()==IDOK)
	{
		if(tc_pdlg.m_wenzi)
		{
			int len;
			len=lpbits[(m_size.cx*m_size.cy-1)*3]%2+(lpbits[(m_size.cx*m_size.cy-2)*3]%2)*2
				+(lpbits[(m_size.cx*m_size.cy-3)*3]%2)*4+(lpbits[(m_size.cx*m_size.cy-4)*3]%2)*8
				+(lpbits[(m_size.cx*m_size.cy-5)*3]%2)*16+(lpbits[(m_size.cx*m_size.cy-6)*3]%2)*32
				+(lpbits[(m_size.cx*m_size.cy-7)*3]%2)*64+(lpbits[(m_size.cx*m_size.cy-8)*3]%2)*128;
			
			char *cchar;
			cchar=new char[len];
			cchar[len]='\0';
			for(int i=0;i<len*8;i=i+8)
			{
				cchar[i/8]=lpbits[i*3]%2+(lpbits[(i+1)*3]%2)*2
					+(lpbits[(i+2)*3]%2)*4+(lpbits[(i+3)*3]%2)*8
					+(lpbits[(i+4)*3]%2)*16+(lpbits[(i+5)*3]%2)*32
					+(lpbits[(i+6)*3]%2)*64+(lpbits[(i+7)*3]%2)*128;
			}
			CString chprint=cchar;
			AfxMessageBox(chprint);
		}
	
		if(tc_pdlg.m_tuxiang)
		{
			int len;
			len=lpbits[(m_size.cx*m_size.cy-1)*3]%2+(lpbits[(m_size.cx*m_size.cy-2)*3]%2)*2
				+(lpbits[(m_size.cx*m_size.cy-3)*3]%2)*4+(lpbits[(m_size.cx*m_size.cy-4)*3]%2)*8
				+(lpbits[(m_size.cx*m_size.cy-5)*3]%2)*16+(lpbits[(m_size.cx*m_size.cy-6)*3]%2)*32
				+(lpbits[(m_size.cx*m_size.cy-7)*3]%2)*64+(lpbits[(m_size.cx*m_size.cy-8)*3]%2)*128;
			
			mm_lpbits=new unsigned char[len*len*3];
			for(int i=0;i<len;i++)
				for(int j=0;j<len;j++)
				{
					mm_lpbits[(i*len+j)*3]=(lpbits[((i*len+j)*8)*3]%2)+(lpbits[((i*len+j)*8+1)*3]%2)*2
						+(lpbits[((i*len+j)*8+2)*3]%2)*4+(lpbits[((i*len+j)*8+3)*3]%2)*8
						+(lpbits[((i*len+j)*8+4)*3]%2)*16+(lpbits[((i*len+j)*8+5)*3]%2)*32
						+(lpbits[((i*len+j)*8+6)*3]%2)*64+(lpbits[((i*len+j)*8+7)*3]%2)*128;

					mm_lpbits[(i*len+j)*3+1]=(lpbits[((i*len+j)*8)*3+1]%2)+(lpbits[((i*len+j)*8+1)*3+1]%2)*2
						+(lpbits[((i*len+j)*8+2)*3+1]%2)*4+(lpbits[((i*len+j)*8+3)*3+1]%2)*8
						+(lpbits[((i*len+j)*8+4)*3+1]%2)*16+(lpbits[((i*len+j)*8+5)*3+1]%2)*32
						+(lpbits[((i*len+j)*8+6)*3+1]%2)*64+(lpbits[((i*len+j)*8+7)*3+1]%2)*128;

					mm_lpbits[(i*len+j)*3+2]=(lpbits[((i*len+j)*8)*3+2]%2)+(lpbits[((i*len+j)*8+1)*3+2]%2)*2
						+(lpbits[((i*len+j)*8+2)*3+2]%2)*4+(lpbits[((i*len+j)*8+3)*3+2]%2)*8
						+(lpbits[((i*len+j)*8+4)*3+2]%2)*16+(lpbits[((i*len+j)*8+5)*3+2]%2)*32
						+(lpbits[((i*len+j)*8+6)*3+2]%2)*64+(lpbits[((i*len+j)*8+7)*3+2]%2)*128;
				}
			for(i=0;i<len*len*3;i++)lpbits[i]=mm_lpbits[i];
			mm_m_size.cx=len;	
			mm_m_size.cy=len;
			mm_lpbmi->bmiHeader.biWidth=len;
			mm_lpbmi->bmiHeader.biHeight=len;
			mm_lpbmi->bmiHeader.biSizeImage=len*len*3;
			mm_bmh.bfSize=len*len*3+54;
			trans=1;
			UpdateAllViews(NULL);
			SetModifiedFlag();
		}

//声音隐藏算法暂时没做,可继续完成,原理相同
/*
		if(tc_pdlg.m_shengyin)
		{
		}
*/
	}
}

void CInfoHideDoc::OnBmp2jpeg() 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -