验证循环异或的可行性

验证循环异或的可行性

加密:

例如,(p1、p2、p3、p4)

每一个都是与前一个异或的结果异或:

新值

(0、p2⊕p1、p3⊕(p2⊕p1)、p4⊕(p3⊕(p2⊕p1))

第一个值是p1与最后一个的值异或

(p4⊕p3⊕p2、p2⊕p1、p3⊕(p2⊕p1)、p4⊕(p3⊕(p2⊕p1))

标记为

(c1,c2,c3,c4)

解密:

(d1,d2,d3,d4)

第一步先计算:

c2⊕c3==(p2⊕p1)⊕ (p3⊕(p2⊕p1))=p3———d3

c3⊕c4==(p3⊕(p2⊕p1))⊕ (p4⊕(p3⊕(p2⊕p1))=p4————-d4

c1⊕d4=c1⊕(c3⊕c4)=(p1 ⊕p4)⊕p4=p1————-d1

c2⊕d1=p2⊕p1⊕p1=p2—————d2

(d1,d2,d3,d4)

代码如下:

clc
clearvars
n=4
p(n)=0;
for i=1:n
    p(i)=randi([0 255], 1, 1);
end
p
c(1)=p(1);
for i=2:n
    c(i)=bitxor(c(i-1),p(i));
end
c(1)=bitxor(p(1),c(n));
c

for i=3:n
    d(i)=bitxor(c(i-1),c(i));
end
d(1)=bitxor(c(1),c(n));
d(2)=bitxor(c(2),d(1));
d

输出结果如下:

n =

     4

p =

    38    65   215    65

c =

   215   103   176   241

d =

    38    65   215    65

>>

你可能感兴趣的:(图像加密)