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

📄 laihui1dlg.cpp

📁 无线通信系统中密钥流生成器——LILI-II。以VC++为编程工具
💻 CPP
📖 第 1 页 / 共 2 页
字号:
}




void CLaihui1Dlg::OnChangeEdit1() 
{   
	UpdateData(TRUE);
	m_edit3=m_edit1.GetLength();
	UpdateData(FALSE);
}

void CLaihui1Dlg::OnChangeEdit2() 
{
	UpdateData(TRUE);
	m_edit4=m_edit2.GetLength();
	UpdateData(FALSE);
}



void CLaihui1Dlg::OnButton3() 
{
	int nout;
	int i;
	UpdateData(TRUE);   
	m_edit5.Empty();
	UpdateData(FALSE);
    UpdateData(TRUE);
	nout=m_edit6;
	
	

	if(!LILI.LFSRc.length)
	{
	    MessageBox("LFSRc的寄存器阶段q未配置!请配置,按输入按钮确定.",
			       "提示!",MB_ICONINFORMATION);
		m_radio1=0;
		m_edit1.Empty();
		c_edit1.SetFocus();
	    UpdateData(FALSE);
		return;
		
	}

	if(LILI.LFSRc.length&&!LILI.LFSRc.length_a)
	{
        MessageBox("LFSRc的寄存器初始状态a未配置!请配置,按输入按钮确定.",
			       "提示!",MB_ICONINFORMATION);
		m_radio1=0;
		m_edit2.Empty();
		c_edit2.SetFocus();
	    UpdateData(FALSE);
		return;
	}

	if(!LILI.LFSRd.length)
	{
	    MessageBox("LFSRd的寄存器阶段q未配置!请配置,按输入按钮确定.",
			       "提示!",MB_ICONINFORMATION);
		m_radio1=1;
		m_edit1.Empty();
		c_edit1.SetFocus();
	    UpdateData(FALSE);
		return;
	
	}

	if(LILI.LFSRd.length&&!LILI.LFSRd.length_a)
	{
        MessageBox("LFSRd的寄存器初始状态a未配置!请配置,按输入按钮确定.",
			       "提示!",MB_ICONINFORMATION);
		m_radio1=1;
		m_edit2.Empty();
		c_edit2.SetFocus();
	    UpdateData(FALSE);
		return;
	}

	if(!nout)
	{
		MessageBox("请输入输出位数","提示!",MB_ICONINFORMATION);
		return;
	}


	for(i=0;i<m_edit6;i++) 
	{		
		if(LILI.output(m_radio3)) m_edit5+='1';
		else m_edit5+='0';
	}

	c_edit5.SetWindowText(m_edit5);
}

void CLaihui1Dlg::OnButton4() 
{
 
	int i;
	CString time;
    LARGE_INTEGER litmp;
	LONGLONG QPart1,QPart2;
	double dfMinus, dfFreq, dfTim;
	QueryPerformanceFrequency(&litmp);
	dfFreq = (double)litmp.QuadPart;
	QueryPerformanceCounter(&litmp);
	QPart1 = litmp.QuadPart;
	UpdateData(TRUE);
    for(i=0;i<1000000;i++)
	{
		if (!m_radio1) LILI.LFSRc.Run(m_radio3);
		else LILI.LFSRd.Run(m_radio3);
	}
	QueryPerformanceCounter(&litmp);
	QPart2 = litmp.QuadPart;
	dfMinus = (double)(QPart2-QPart1);
	dfTim = dfMinus / dfFreq;
    time.Format("%lf",dfTim);
	time+="  秒";
	c_edit7.SetWindowText(time);	
}

void CLaihui1Dlg::OnRadio1() 
{
    CString s;
	UpdateData(TRUE);
	if(!m_radio1) 
	{	
		c_edit8.SetWindowText("初始化配置LFSRc(状态q的长度即为寄存器长度)");
		if(LILI.LFSRc.length!=0) 
		{   
			UpdateData(TRUE);
			s=LILI.LFSRc.ctos(LILI.LFSRc.q);
			c_edit1.SetWindowText(s);
			UpdateData(TRUE);
			m_edit3=LILI.LFSRc.length;
			UpdateData(FALSE);
	      
		}
		else 
		{
			m_edit1.Empty();
			c_edit1.SetFocus();
			UpdateData(FALSE);
            UpdateData(TRUE);
	    	m_edit3=0;
		 	UpdateData(FALSE);
		}
		if(LILI.LFSRc.length_a!=0) 
		{   
			UpdateData(TRUE);
			s=LILI.LFSRc.ctos(LILI.LFSRc.a);
			c_edit2.SetWindowText(s);
			UpdateData(TRUE);
			m_edit4=LILI.LFSRc.length;
			UpdateData(FALSE);
		}
		else
		{
			m_edit2.Empty();
		    if(LILI.LFSRc.length!=0) c_edit2.SetFocus();
            UpdateData(FALSE);
			UpdateData(TRUE);
			m_edit4=0;
			UpdateData(FALSE);
		}

	
	}
	
}

void CLaihui1Dlg::OnRadio2() 
{
	CString s;
	UpdateData(TRUE);
	if(m_radio1) 
	{	
		c_edit8.SetWindowText("初始化配置LFSRd(状态q的长度即为寄存器长度)");
		if(LILI.LFSRd.length!=0) 
		{   
			UpdateData(TRUE);
			s=LILI.LFSRd.ctos(LILI.LFSRd.q);
			c_edit1.SetWindowText(s);
			UpdateData(TRUE);
			m_edit3=LILI.LFSRd.length;
			UpdateData(FALSE);
			
		}
		else 
		{
			m_edit1.Empty();
			c_edit1.SetFocus();
			UpdateData(FALSE);
			UpdateData(TRUE);
			m_edit3=0;
	    	UpdateData(FALSE);
		}

		if(LILI.LFSRd.length_a!=0) 
		{   
			UpdateData(TRUE);
		    s=LILI.LFSRd.ctos(LILI.LFSRd.a);
			c_edit2.SetWindowText(s);
			UpdateData(TRUE);
			m_edit4=LILI.LFSRd.length;
			UpdateData(FALSE);
			
		}
		else 
		{
			m_edit2.Empty();
			if(LILI.LFSRd.length!=0) c_edit2.SetFocus();
			UpdateData(FALSE);
			UpdateData(TRUE);
			m_edit4=0;
		    UpdateData(FALSE);
		}

	}
	
}

void CLaihui1Dlg::OnButton5() 
{
	CString strFileName,t;
	int i;
	t.Format("%d",m_edit3);
	strFileName+="test_"+t;
	CFileDialog dlg(FALSE,"ll2",strFileName, //FALSE为"打开文件"窗口,"ll2"为确定时默认的文件类型
		OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
		"初始配置文件(*.ll2)|*.ll2||",NULL);
	dlg.m_ofn.lpstrInitialDir=".\\res";
	if(dlg.DoModal()==IDCANCEL) return;
	strFileName = dlg.GetPathName();

	
	CString Output,temp;
	Output.Empty();

    temp.Format("%d",m_radio3);
	Output+=temp;
	temp.Format("%d",LILI.LFSRc.length);
	Output+=temp;
	Output+=" ";
	for (i=0;i<LILI.LFSRc.length;i++) Output.Insert(65535,LILI.LFSRc.q[i]+'0');
	for (i=0;i<LILI.LFSRc.length;i++) Output.Insert(65535,LILI.LFSRc.a[i]+'0');

	temp.Format("%d",LILI.LFSRd.length);
	Output+=temp;
	Output+=" ";
	for (i=0;i<LILI.LFSRd.length;i++) Output.Insert(65535,LILI.LFSRd.q[i]+'0');
	for (i=0;i<LILI.LFSRd.length;i++) Output.Insert(65535,LILI.LFSRd.a[i]+'0');

	CFile file;
	file.Open(strFileName,CFile::modeCreate|CFile::modeWrite);

	file.Write(Output,Output.GetLength());
	file.Close();

    CLaihui1Dlg::MessageBox("保存完毕!","提示",MB_ICONINFORMATION);
}

void CLaihui1Dlg::OnButton6() 
{
	CString strFileName;
	CFile file;
	char buffer[1000];

	int i,j;
	int sum;
	CFileDialog dlg(TRUE,"ll2","def.ll2", //TRUE为"打开文件"窗口,"ll2"为确定时默认的文件类型
		OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
		"初始配置文件(*.ll2)|*.ll2||",NULL);
	dlg.m_ofn.lpstrInitialDir=".\\res";
	if(dlg.DoModal()==IDCANCEL) return;
	strFileName = dlg.GetPathName();

	file.Open(strFileName,CFile::modeRead);
	file.Read(buffer,file.GetLength());
	file.Close();
	m_radio3=buffer[0]-'0';
	UpdateData(FALSE);
	i=1;
	sum=0;
	while(buffer[i]!=' ')
	{
		sum=10*sum;
		sum+=buffer[i]-'0';
		i++;		
	}
	LILI.LFSRc.length_a=LILI.LFSRc.length=sum;

    for(j=0;j<LILI.LFSRc.length;j++)
	{
		LILI.LFSRc.q[j]=buffer[i+1]-'0';
		i++;
	}
	for(j=0;j<LILI.LFSRc.length;j++)
	{
		LILI.LFSRc.a[j]=buffer[i+1]-'0';
		i++;
	}

	i++;
	sum=0;
	while(buffer[i]!=' ')
	{
		sum=10*sum;
		sum+=buffer[i]-'0';
		i++;
	}
	LILI.LFSRd.length_a=LILI.LFSRd.length=sum;

	for(j=0;j<LILI.LFSRd.length;j++)
	{
		LILI.LFSRd.q[j]=buffer[i+1]-'0';
		i++;
	}
	for(j=0;j<LILI.LFSRd.length;j++)
	{
		LILI.LFSRd.a[j]=buffer[i+1]-'0';
		i++;
	}

    if (!m_radio1) OnRadio1();
	else OnRadio2();
	CLaihui1Dlg::MessageBox("提取完毕!","提示",MB_ICONINFORMATION);
}

void CLaihui1Dlg::OnButton7() 
{
	CLaihui1BM dlg;
	GetDlgItem(IDC_STATICBM)->ShowWindow(1);
	UpdateWindow();
	if (!m_edit5.GetLength())
	{
		MessageBox("没有输出序列","提示",MB_ICONINFORMATION);
		return;
	}
	Test._s=m_edit5;
	Test.B_M_Test();
	MessageBox("测试完毕。\n线性复杂度曲线将自动弹出.","提示",MB_ICONINFORMATION);
	GetDlgItem(IDC_STATICBM)->ShowWindow(0);
    dlg.DoModal();
	
}

⌨️ 快捷键说明

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