对于二元加法序列密码,已知输入序列M为0x23456789,密钥序列Z为0x87654321,求输出序列C。

题解:

1.分析:

加密:依次把明文序列与密钥序列中的对应项做异或,也叫二元加法运算

解密:密钥序列与密文序列中的对应项做二元加法运算(异或)

2.操作
 

(1)输入序列化为二进制

输入序列

转为二进制

2

0010

3

0011

4

0100

5

0101

6

0110

7

0111

8

1000

9

1001

tips(十进制化二进制小技巧):

二进制每一位数从右到左,代表十进制从小到大:1、2、4、8、16……

我们假设转换的十进制数为X,在其中选择最大能减的数(减完>=0),减去,在所选数代表的位数内容变1,如此重复,直到X剩余数值为0

举例:

x=9,最大能减的二进制数是8,减去,第四位数内容变1(1000),现x=1,最大能减的二进制数是1,减去,第一位数内容变1(1001),现x=0,结束

这里是0x是16进制,就先把16进制转10进制就行

(2)密钥序列化为二进制

密钥序列

转为二进制

8

1000

7

0111

6

0110

5

0101

4

0100

3

0011

2

0010

1

0001

(3)求输出序列C

这里我们用到加密操作:明文序列与密钥序列中的对应项做异或

异或运算的基本规则:
  • 同值取0,异值取1:即如果两个二进制位相同,则异或结果为0;如果两个二进制位不同,则异或结果为1。例如,0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0
计算结果:

输入序列

密钥序列

异或结果

化为十进制

0010

1000

1010

A

0011

0111

0100

4

0100

0110

0010

2

0101

0101

0000

0

0110

0100

0010

2

0111

0011

0100

4

1000

0010

1010

A

1001

0001

1000

8

C=0xA42024A8

tips(二进制化十进制小技巧):

二进制每一位数从右到左,代表十进制从小到大:1、2、4、8、16……

将数值对应位数下二进制内容为1的数值相加,和即十进制,这里是0x是16进制,就先把10进制转16进制就行

举例:

1011

= 1x8+0x4+1x2+1x1

=8+2+1

=11

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值