CTF之密码学(埃特巴什码 )

一、基本原理

埃特巴什码的原理是:字母表中的最后一个字母代表第一个字母,倒数第二个字母代表第二个字母,以此类推。在罗马字母表中,对应关系如下:

  • 常文(明文):A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
  • 密文:Z Y X W V U T S R Q P O N M L K J I H G F E D C B A

二、发现者与历史背景

  • 发现者:埃特巴什码是由熊斐特博士发现的。熊斐特博士是库姆兰《死海古卷》的最初研究者之一,在《圣经》历史研究方面有着卓越的贡献,其最有名气的著作是《逾越节的阴谋》。
  • 历史背景:这种密码最初用于希伯来字母表,但可以用于任何字母表。它被运用在公元1世纪的艾赛尼/萨多吉/拿撒勒教派的经文中,用以隐藏姓名。此外,早在公元前500年,它就被抄经人用来写作《耶利米书》。耶利米是活动在公元前627~前586年间的犹太先知,圣经旧约书中有许多关于他的记载。

三、应用与示例

  • 应用:熊斐特博士运用埃特巴什码来研究别人利用其他方法不能破解的那些经文。此外,它还被用于隐藏和传递秘密信息。
  • 示例:以罗马字母表为例,若明文为"the quickbrownfoxjumpsover the lazy dog",则对应的密文为"gsvjfrxpyildm ulc qfnkh levi gsv ozab wlt"。

python解码程序

简单版

python 复制代码
def atbash_decode(txt):
    answer = ""
    for char in txt:
        if 'a' <= char <= 'z':  # 小写字母
            answer += chr(ord('z') - ord(char) + ord('a'))
        elif 'A' <= char <= 'Z':  # 大写字母
            answer += chr(ord('Z') - ord(char) + ord('A'))
        else:  # 非字母字符
            answer += char
    return answer

# 使用示例
txt = input("请输入要解码的文本: ")
print("解码后的文本:", atbash_decode(txt))

困难版

python 复制代码
lower = [chr(i) for i in range(ord('a'), ord('z') + 1)]
upper = [chr(i) for i in range(ord('A'), ord('Z') + 1)]


def kashidecode(txt):
    answer = ""
    for i in range(len(txt)):
        if txt[i].islower():
            # 找到当前小写字母在 lower 列表中的索引
            index = lower.index(txt[i])
            # 使用该索引从列表的末尾获取对应的字母
            answer += lower[-1 - index]
        elif txt[i].isupper():
            # 对大写字母做同样的处理
            index = upper.index(txt[i])
            answer += upper[-1 - index]
        else:
            # 非字母字符保持不变
            answer += txt[i]
    return answer


if __name__ == '__main__':
    txt = input("请输入要解码的文本: ")
    answer = kashidecode(txt)
    print("解码后的文本:", answer)
相关推荐
微刻时光27 分钟前
影刀RPA开发-CSS选择器介绍
css·python·低代码·自动化·rpa·影刀rpa·影刀实战
程序员拂雨1 小时前
Python知识框架
开发语言·python
灏瀚星空1 小时前
地磁-惯性-视觉融合制导系统设计:现代空战导航的抗干扰解决方案
图像处理·人工智能·python·深度学习·算法·机器学习·信息与通信
Code_流苏1 小时前
《Python星球日记》 第72天:问答系统与信息检索
python·微调·问答系统·bert·应用场景·基于检索·基于生成
敲键盘的小夜猫1 小时前
深入理解Python逻辑判断、循环与推导式(附实战案例)
开发语言·python
Looooking2 小时前
Python 之 selenium 打开浏览器指定端口进行接续操作
python·selenium
Dreams°1232 小时前
【Python爬虫 !!!!!!政府招投标数据爬虫项目--医疗实例项目文档(提供源码!!!)!!!学会Python爬虫轻松赚外快】
分布式·爬虫·python·mysql·scikit-learn
郜太素2 小时前
PyTorch 中神经网络相关要点(损失函数,学习率)及优化方法总结
人工智能·pytorch·python·深度学习·神经网络·学习
L_cl2 小时前
【Python 算法零基础 2.模拟 ④ 基于矩阵】
python·算法·矩阵
玉笥寻珍2 小时前
web安全渗透测试基础知识之登录绕过篇
python·安全·web安全·网络安全·威胁分析