?? stream.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 + -