信息解码
问题描述:将输入文件中的加密信息按照解密规则重现信息明文
解密规则:
•该信息解码要求经过加密的信息必须包含两部分,第一部分应该包含的是信息明文中所出现的字符,这部分我们称之为头;第二部分则是经过加密后的信息的正文;
•加 密 信 息 机 制 的 核 心 是 由 如 下 的 一 些 由 '0' 和 '1' 形 成 的 关 键 字 序 列 组 成 :0,00,01,10,000,001,010,011,100,101,110,0000,0001,. . .,1011,1110,00000, . . . 在这个序列中的第 1 个关键字的长度是 1,紧接着的 3 个的关键字的长度是 2,紧接着的 7个关键字的长度是 3,紧接着的 15 个关键字的长度是 4,等等。如果相邻的两个关键字的长度一样,那么第 2 个关键字一定是前一个关键字加 1 而得(基于 2 进制)。一定要注意在这个序列中没有出现任何一个全部由'1'组成的关键字。
•这些关键字将会与头中出现的字符顺序一一映射。也就是说第 1 个关键字(0)将代表头中出现的第 1 个字符,第 2 个关键字(00)将代表头中出现的第 2 个字符,等等。例如,假设信息中的头是: AB#TANCnrtXc,那么 0 就代表 A,00 就代表 B,01 就代表#,10 就代表 T,000 就代表 A,...,110 代表 X,0000 代表 c。
•经过加密后的信息正文仅仅包含'0'和'1',正文中出现的回车换行将被忽略。
•加密后的信息正文是由若干个组组成。
•每个组的前 3 个数字表示的包含在这个组中的关键字的长度。例如,如果前 3 个数字是 010,那么这个组中的剩余部分就只包含长度为 2 的关键字(00,01 或 10)。每个组的结束标志是与该组包含关键字等长的全'1'码。所以例子中的组的结束标志将是 11。
•整个加密后的信息正文的结束标志是 000(因为我们没有一个长度为 0 的关键字)。
我们的解密过程就是将出现在段中的关键字转换成与之对应的头中的字符即可。
输入文件:
•输入文件中将只包含一个数据集;
•每个数据集都是由头和加密后的信息组成。其中,头只占单独的一行,加密后的信息则可能由若干行组成
输出文件:
•按照数据集在输入文件中的出现顺序将解密后的信息逐行输出。
例子:
输入文件:
TNM AEIOU
0010101100011
1010001001110110011
11000
输出文件:
TAN ME
这个JAVA程序怎么编啊,是不是要用到IO啊
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
悬赏问题
- ¥15 onlyoffice编辑完后立即下载,下载的不是最新编辑的文档
- ¥15 求caverdock使用教程
- ¥15 Coze智能助手搭建过程中的问题请教
- ¥15 12864只亮屏 不显示汉字
- ¥20 三极管1000倍放大电路
- ¥15 vscode报错如何解决
- ¥15 前端vue CryptoJS Aes CBC加密后端java解密
- ¥15 python随机森林对两个excel表格读取,shap报错
- ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
- ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。