原来那篇文章写错了,以下是更新的
NIST测试攻略
首先明确要测试什么东西,如果是测试混沌的话,步骤如下:
1.拥有混沌的simlunik文件(即.mdl文件),然后运行;
2,用师兄的marlab程序运行,注意修改里面的东西如(要运行的.mdl文件,和要生成序列的文件放在 哪);此时已经生成一个可以用来测试的文件了,如testdata.txt
测试文件也可以用别的仿真软件生成的序列
3.打开cygwin文件,输入cd d:/NIST_ceshibao/sts(这是为了找到.assess文件的位置)
4.输入./assess 长度(如1000000)这个长度是一组的长度,所以要注意序列的位数一定要多,才能完成测试。//是在MATLAB中生成后的界面中你会看到m1,和n,这两个相乘就是要输入的总长度,但这个可以根据自己需要更改。
5.选择0,表示要输入测试的文件
6.输入要测试的序列文件的位置,比如d:/NIST_ceshibao/sts/data/data_out.txt
7.输入1,(就是选择测试15项)
8.输入0,(就是设置为默认参数)
9.输入组个数(这个一般是分组,把你想分多少组测试就输入多少组,比如10,就是分成10组,每组1000000(这个是上面那个输入的) http://blog.youkuaiyun.com/qishandaxue/article/details/51576447)
10.输入0,选择2进制(选择1会出现UNDERFLOW问题)
11,耐心等待结果在(D:\NIST_ceshibao\sts\experiments\AlgorithmTesting)
12.结果在D:\NIST_ceshibao\sts\experiments\AlgorithmTesting(这是我安装的这个测试软件的位置)
注意:测试序列取值太少容易测试不通过
(该测试方法也是我胡师兄交给我的,我把步骤稍加整理得来)
matlab程序
clc;
clear all;
% sim('Bldcm_ori1');%%%测试BLD系统//根据自己要测试的内容自己修改
% X1=iq;
sim('hynew');%%%测试Qi超混沌系统//和上面的一样,这两个是测试的不同的混沌,如果要测试自己的就用其中一个就行
X1=x1;
TM1=mod(10^7*(X1+abs(min(X1))),2^8);
%TM2=mod(16807*(X2+abs(min(X2))),2^8);
D1=dec2bin(TM1);
%D2=dec2bin(TM2);
[m1,n1]=size(D1)
%[m2,n2]=size(D2);
% %%将每个二进制序列首尾相连
EE1=D1'
%EE2=D2';
%S1=reshape(EE1,1,m1*n1);%得到的结果为一行的字符串
%S2=reshape(EE2,1,m2*n2);
%L=length(S1)
%ss1 = str2num(EE1(:))';%%将字符串转化为矩阵
%size(ss1)
%ss2= str2num(S2(:))';
% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%ss=xor(ss1,ss2);
fid=fopen('testdata1.txt','w+');
fprintf(fid,'%s',EE1);
fclose(fid);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%dlmwrite('data_result.txt', ss1,'\t')
%save('data_result.txt','ss1')
%data122 = load('data_result.mat')