📄 dopc1
字号:
#!/usr/local/bin/perl@l=( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15, 16,17,18,19,20,21,22,23, 24,25,26,27,28,29,30,31 );@r=( 32,33,34,35,36,37,38,39, 40,41,42,43,44,45,46,47, 48,49,50,51,52,53,54,55, 56,57,58,59,60,61,62,63 );require 'shifts.pl';sub PERM_OP { local(*a,*b,*t,$n,$m)=@_; @z=&shift(*a,-$n); @z=&xor(*b,*z); @z=&and(*z,$m); @b=&xor(*b,*z); @z=&shift(*z,$n); @a=&xor(*a,*z); }sub HPERM_OP2 { local(*a,*t,$n,$m)=@_; local(@x,@y,$i); @z=&shift(*a,16-$n); @z=&xor(*a,*z); @z=&and(*z,$m); @a=&xor(*a,*z); @z=&shift(*z,$n-16); @a=&xor(*a,*z); }sub HPERM_OP { local(*a,*t,$n,$m)=@_; local(@x,@y,$i); for ($i=0; $i<16; $i++) { $x[$i]=$a[$i]; $y[$i]=$a[16+$i]; } @z=&shift(*x,-$n); @z=&xor(*y,*z); @z=&and(*z,$m); @y=&xor(*y,*z); @z=&shift(*z,$n); @x=&xor(*x,*z); for ($i=0; $i<16; $i++) { $a[$i]=$x[$i]; $a[16+$i]=$y[$i]; } }@L=@l;@R=@r; print "---\n"; &printit(@R);&PERM_OP(*R,*L,*T,4,0x0f0f0f0f); print "---\n"; &printit(@R);&HPERM_OP2(*L,*T,-2,0xcccc0000);&HPERM_OP2(*R,*T,-2,0xcccc0000); print "---\n"; &printit(@R);&PERM_OP(*R,*L,*T,1,0x55555555); print "---\n"; &printit(@R);&PERM_OP(*L,*R,*T,8,0x00ff00ff); print "---\n"; &printit(@R);&PERM_OP(*R,*L,*T,1,0x55555555); print "---\n"; &printit(@R);# &printit(@L); &printit(@R);print <<"EOF";==============================63 55 47 39 31 23 15 7 62 54 46 38 30 22 14 6 61 53 45 37 29 21 13 5 60 52 44 36 -- -- -- -- 57 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 3 28 20 12 4 -- -- -- -- EOFexit(1);@A=&and(*R,0x000000ff);@A=&shift(*A,16);@B=&and(*R,0x0000ff00);@C=&and(*R,0x00ff0000);@C=&shift(*C,-16);@D=&and(*L,0xf0000000);@D=&shift(*D,-4);@A=&or(*A,*B);@B=&or(*D,*C);@R=&or(*A,*B);@L=&and(*L,0x0fffffff); &printit(@L); &printit(@R);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -