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

📄 stream.cpp

📁 无线通信系统中密钥流生成器——LILI-II。以VC++为编程工具
💻 CPP
字号:
#include "stdafx.h"
#include "Stream.h"

CString Key_Stream::CString_And(CString a,CString b)
{   CString result;
    int i,la=a.GetLength(),lb=b.GetLength();
	int minlen;
	if (la>=lb) 
	{
		minlen=lb;
        result=a;
	}
	else
	{
		minlen=la;
		result=b;
	};
    for(i=0;i<minlen;i++) 
		if (a.GetAt(i)==b.GetAt(i)) result.SetAt(i,'0');
		else result.SetAt(i,'1');
    return result;
}

void Key_Stream::B_M_Init()
{
	int i;
	_C="1";
	_B="1";
	_L=0;
	_m=-1;
	_N=0;
	Delta=1;
	for(i=0;i<101;i++) B_M_Out[i]=0;
}

bool Key_Stream::B_M_test(int len)
{
	CString _T,_M;
	int d,i,j;
	int n;
	if(len>_s.GetLength()) return 0;
	n=len;
	while(_N<n)
	{
	    i=_s.GetAt(0);
		j=_s.GetAt(1);
		for (i=1,d=_s.GetAt(_N)-'0';i<=_L;i++) d+=(_C.GetAt(i)-'0')*(_s.GetAt(_N-i)-'0');
		d=d%2;
		if (d==1)
		{
			_T=_C;
			_M=_B;
			for(j=0;j<_N-_m;j++) _M.Insert(0,"0");
			_C=CString_And(_C,_M);
			if (_L<=_N/2) 
			{
				_L=_N+1-_L;
				_m=_N;
				_B=_T;
			}
		}
		_N++;
	}
	return 1;
}

void Key_Stream::B_M_Test()
{
	int i;
	int length=_s.GetLength();
	B_M_Init();
	Delta=length/100;
	if (Delta<1) Delta=1;
	if (length>=100)
	{
		B_M_Out[0]=100;
		for(i=1;i<=100;i++)
		{
 		    B_M_test(i*Delta);
 		    B_M_Out[i]=GetL();
		}
	}
	else
	{
		B_M_Out[0]=length;
		for(i=1;i<=length;i++)
		{
			B_M_test(i);
			B_M_Out[i]=GetL();
		}
	}
}

int Key_Stream::GetL()
{
	return _L;
}

CString Key_Stream::GetC()
{
	return _C;
};

⌨️ 快捷键说明

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