CTF之密码学(当铺解密)

一、当铺密码的基本原理

  • 加密过程

    • 当铺密码通过将汉字的笔画数转化为数字来进行加密。具体来说,一个汉字的笔画数(出头笔画也算作一笔)就是它对应的数字。
    • 例如,汉字"由"有3笔(包括出头的笔画),在加密时就可以表示为数字"3"。
  • 解密过程

    • 解密时,需要将数字重新映射回对应的汉字。这通常需要一个预定义的汉字笔画映射表,该表列出了每个汉字及其对应的笔画数。
    • 通过查找这个表,可以将数字解密为对应的汉字。

二、解密步骤

  1. 准备汉字笔画映射表

    • 创建一个包含常用汉字及其笔画数的映射表。这个表应该足够全面,以涵盖可能用于加密的所有汉字。
    • 需要注意的是,由于汉字的笔画数可能因书写习惯和字体差异而有所不同,因此在实际应用中需要选择一个标准的笔画数定义。
  2. 接收加密信息

    • 接收由数字组成的加密信息。这些数字代表了对应汉字的笔画数。
  3. 解密数字为汉字

    • 遍历加密信息中的每个数字。
    • 在汉字笔画映射表中查找与该数字对应的汉字。
    • 将找到的汉字添加到解密结果中。
  4. 验证解密结果

    • 根据上下文或预期内容验证解密结果是否正确。
    • 如果解密结果不符合预期,可能需要检查加密信息是否正确、汉字笔画映射表是否完整或准确等问题。

三、示例

假设我们有一个简单的汉字笔画映射表如下:

汉字 笔画数
5
3(包括出头的笔画)
4
2
... ...

如果我们收到的加密信息是"5 3 4 2",那么解密过程如下:

  1. 在映射表中查找笔画数为5的汉字,找到"田"。
  2. 在映射表中查找笔画数为3的汉字,找到"由"。
  3. 在映射表中查找笔画数为4的汉字,找到"中"。
  4. 在映射表中查找笔画数为2的汉字,找到"人"。

因此,解密结果是"田中由人"。

python解码程序

python 复制代码
s = '田由中人工大王夫井羊'
txt = input()
# txt = txt.split()
answer = ""
fu = ""
for i in range(len(txt)):
    if txt[i] == " ":
        answer += chr(int(fu))
        fu = ""
    elif txt[i] in s:
        fu += str(s.index(txt[i]))
answer += chr(int(fu))
print(answer)
相关推荐
一 乐1 小时前
婚纱摄影网站|基于ssm + vue婚纱摄影网站系统(源码+数据库+文档)
前端·javascript·数据库·vue.js·spring boot·后端
1.14(java)2 小时前
SQL数据库操作:从CRUD到高级查询
数据库
Full Stack Developme3 小时前
数据库索引的原理及类型和应用场景
数据库
IDC02_FEIYA4 小时前
SQL Server 2025数据库安装图文教程(附SQL Server2025数据库下载安装包)
数据库·windows
辞砚技术录5 小时前
MySQL面试题——联合索引
数据库·面试
萧曵 丶5 小时前
MySQL 主键不推荐使用 UUID 的深层原因
数据库·mysql·索引
小北方城市网5 小时前
分布式锁实战指南:从选型到落地,避开 90% 的坑
java·数据库·redis·分布式·python·缓存
毕设十刻5 小时前
基于Vue的人事管理系统67zzz(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
前端·数据库·vue.js
TDengine (老段)7 小时前
TDengine Python 连接器入门指南
大数据·数据库·python·物联网·时序数据库·tdengine·涛思数据
萧曵 丶8 小时前
事务ACID特性详解
数据库·事务·acid