马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
MATLAB代码如下:
%x的二进制表示法,seqb.m文件
function B=seqb(x,b)
k=20;%相当于取i=20
b=0;
for r=1:1:(2^k-1)
t=r/2^k;
if x>=t
theta=(-1)^(r-1);
else
theta=0;
end
b=b+theta;
end
B=b;
%加密代码
charL='A novel block crytosystem based on iterating a chaotic map é';
doubleL=double([charL]);
P=dec2bin(doubleL);
lenP=length(P);
Q=P(1,:);
for i=2:lenP
Q=[Q P(i,:)];
end
e=64-mod(length(Q),64);
for i=1:e
Q=[Q 0];
end
L=length(Q);
L=L/64;
Q=reshape(Q,64,[]);
x=246;
x=x/256*0.6+0.2;
d=250; nu=3.85; b=zeros(1,64); c=zeros(1,6); T=[];
for i=1:L %迭代d次
for i=1:d
x=nu.*x.*(1-x);
end
for i=1:64 %迭代64次,生成A
x=nu.*x.*(1-x);
b(1,i)=seqb(x);
end
for i=65:70 %迭代6次,生成A'
x=nu.*x.*(1-x);
c(1,i-64)=seqb(x);
end
d=binvec2dec(c);
t=[Q(d+1:64,i); Q(1:d,i)];
t=xor(t,b(:));
t=num2str(t);
T=[T t];
end
disp(T);
运行会出现错误提示:??? Index exceeds matrix dimensions.
[ 本帖最后由 xsj3917 于 2006-10-31 15:27 编辑 ] |