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

本文主要是介绍对于二元加法序列密码,已知输入序列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

这篇关于对于二元加法序列密码,已知输入序列M为0x23456789,密钥序列Z为0x87654321,求输出序列C。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1104471

相关文章

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

利用Python实现时间序列动量策略

《利用Python实现时间序列动量策略》时间序列动量策略作为量化交易领域中最为持久且被深入研究的策略类型之一,其核心理念相对简明:对于显示上升趋势的资产建立多头头寸,对于呈现下降趋势的资产建立空头头寸... 目录引言传统策略面临的风险管理挑战波动率调整机制:实现风险标准化策略实施的技术细节波动率调整的战略价

使用Java将实体类转换为JSON并输出到控制台的完整过程

《使用Java将实体类转换为JSON并输出到控制台的完整过程》在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用JSON格式,用Java将实体类转换为J... 在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用j

PostgreSQL 序列(Sequence) 与 Oracle 序列对比差异分析

《PostgreSQL序列(Sequence)与Oracle序列对比差异分析》PostgreSQL和Oracle都提供了序列(Sequence)功能,但在实现细节和使用方式上存在一些重要差异,... 目录PostgreSQL 序列(Sequence) 与 oracle 序列对比一 基本语法对比1.1 创建序

使用Python实现一键隐藏屏幕并锁定输入

《使用Python实现一键隐藏屏幕并锁定输入》本文主要介绍了使用Python编写一个一键隐藏屏幕并锁定输入的黑科技程序,能够在指定热键触发后立即遮挡屏幕,并禁止一切键盘鼠标输入,这样就再也不用担心自己... 目录1. 概述2. 功能亮点3.代码实现4.使用方法5. 展示效果6. 代码优化与拓展7. 总结1.

C++从序列容器中删除元素的四种方法

《C++从序列容器中删除元素的四种方法》删除元素的方法在序列容器和关联容器之间是非常不同的,在序列容器中,vector和string是最常用的,但这里也会介绍deque和list以供全面了解,尽管在一... 目录一、简介二、移除给定位置的元素三、移除与某个值相等的元素3.1、序列容器vector、deque

python多种数据类型输出为Excel文件

《python多种数据类型输出为Excel文件》本文主要介绍了将Python中的列表、元组、字典和集合等数据类型输出到Excel文件中,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一.列表List二.字典dict三.集合set四.元组tuplepython中的列表、元组、字典

Spring AI集成DeepSeek实现流式输出的操作方法

《SpringAI集成DeepSeek实现流式输出的操作方法》本文介绍了如何在SpringBoot中使用Sse(Server-SentEvents)技术实现流式输出,后端使用SpringMVC中的S... 目录一、后端代码二、前端代码三、运行项目小天有话说题外话参考资料前面一篇文章我们实现了《Spring

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动