首页 > 其他分享 >古典密码学 (一)

古典密码学 (一)

时间:2024-10-13 14:32:15浏览次数:7  
标签:加密 text 解密 char 密码 result 古典 密码学

凯撒密码

  • 恺撒密码 (Caesar Cipher) 又被称为 凯撒变换或者叫做变换密码。该密码是以凯撒大帝的名字命名的。 凯撒密码是一种替换加密,通过该明文中的所有字母都在字母表上向后或者向前移动固定数目替换为密文 例如 当偏移量为3的时候,字母A就会变成D,字母B就会被替换成E
  • 凯撒密码不仅本身是一种加密方式,同样也是作为很多加密算法的重要过程,例如凯撒密码通常会被作为维吉尼亚密码中的一个步骤。
# 示例代码
def caesar_cipher(text, shift, mode='encrypt'):
    """
    实现凯撒密码的加密或解密。

    参数:
    text : str
        需要加密或解密的文本。
    shift : int
        字符移动的位置数。
    mode : str, 可选
        操作模式,'encrypt' 为加密,'decrypt' 为解密,默认为 'encrypt'。

    返回:
    str
        加密或解密后的文本。
    """
    result = ""
    # 根据模式调整偏移量
    if mode == 'decrypt':
        shift = -shift
    for char in text:
        # 处理字母字符
        if char.isalpha():
            start = ord('a') if char.islower() else ord('A')
            offset = (ord(char) - start + shift) % 26
            result += chr(start + offset)
        else:
            # 非字母字符直接添加
            result += char
    return result


# 输入原文
text = input("")
# 输入偏移量
shift = int(input(""))

# 执行加密操作
encrypted_text = caesar_cipher(text, shift)
print("Encrypted:", encrypted_text)

# 执行解密操作
decrypted_text = caesar_cipher(encrypted_text, shift, mode='decrypt')
print("Decrypted:", decrypted_text)

Atbash 密码

  • 埃特巴什码 (Atbash Cipher)是一种简单的替换密码,与凯撒密码类型,区别在于替换的规则不通过 一般 埃特巴什码使用下面的码表
明文:ABCDEFGHIJKLMNOPRSTUVWXYZ
密文:ZYXWVUTSRPONMLKJIHGEFDCBA
  • 这是使用一种将字母表前后倒转进行替换 同样可以直接按照码表转回进行解密或者使用词频分析进行破解
# 示例代码
def atbash_cipher(text):
    """
    实现Atbash密码的加密和解密。

    参数:
    text : str
        需要加密或解密的文本。

    返回:
    str
        加密或解密后的文本。
    """
    result = ""
    for char in text:
        if char.isalpha():
            # 判断字母大小写并进行转换
            start = ord('a') if char.islower() else ord('A')
            # 使用25 - (ord(char) - start)实现Atbash密码逻辑
            result += chr(start + (25 - (ord(char) - start)))
        else:
            # 非字母字符直接添加
            result += char
    return result


# 输入原文
text = input("Enter the text: ")
# 输入要执行的操作 输入 1 执行加密 输入2 执行解密
choice = int(input("Enter 1 for encryption or 2 for decryption: "))
if choice == 1:
    # 执行加密操作
    encrypted_text = atbash_cipher(text)
    print("Encrypted:", encrypted_text)
elif choice == 2:
    # 再次执行Atbash密码将加密文本转换回原文
    decrypted_text = atbash_cipher(text)
    print("Decrypted:", decrypted_text)
else:
    print("Invalid choice. Exiting.")
    exit()

标签:加密,text,解密,char,密码,result,古典,密码学
From: https://www.cnblogs.com/ZapcoMan/p/18462282

相关文章

  • 欢迎来到密码学的奇妙世界!(`^`=◕ᴥ◕=`^`)
    欢迎来到密码学的奇妙世界!(^=◕ᴥ◕=^)大家好!今天我们将一起探索一个神秘而迷人的领域——密码学!在这个信息爆炸的时代,保护我们的个人信息安全显得尤为重要,而密码学正是为此而生的科学。(★≧▽^))★☆什么是密码学?密码学,简单来说,就是研究如何保护信息的学问。它涵盖了从数据加......
  • 密码学承诺之原理和应用 - Kate多项式承诺
    主页微信公众号:密码应用技术实战博客园首页:https://www.cnblogs.com/informatics/GIT地址:https://github.com/warm3snow简介多项式承诺是一种实用性比较强的密码学承诺方案,允许一个方(承诺者)向另一个方(验证者)承诺一个多项式的值,而不泄露多项式的具体形式。在零知识证明、可......
  • 【Canvas与艺术】古典绿墙象牙白框红棱六边形窗格
    【成图】【代码】<!DOCTYPEhtml><htmllang="utf-8"><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><head><title>古典六边形窗格Draft1</title><styletype=&q......
  • 古典舞在线交流:SpringBoot平台实现与优化
    第一章绪论1.1研究背景在当今的社会,可以说是信息技术的发展时代,在社会的方方面面无不涉及到各种信息的处理。信息是人们对客观世界的具体描述,是人们进行交流与联系的重要途径。人类社会就处在一个对信息进行有效合理的加工中。它将促进整个社会的发展。随着社会信息技术......
  • 密码学承诺之原理和应用 - pedersen承诺
    主页微信公众号:密码应用技术实战博客园首页:https://www.cnblogs.com/informatics/GIT地址:https://github.com/warm3snow简介在上一篇文章《密码学承诺之原理和应用-概览》中,我们详细介绍了常见的密码学承诺原理,本节我们将重点介绍Pedersen承诺的实现和应用。在区块链技......
  • 密码学承诺之原理和应用 - sigma承诺
    微信公众号:密码应用技术实战博客园首页:https://www.cnblogs.com/informatics/GIT地址:https://github.com/warm3snow简介在上一篇文章《密码学承诺之原理和应用-概览》中,我们详细介绍了常见的密码学承诺原理,本节我们将重点介绍Sigma承诺的实现和应用。Sigma承诺Sigma承诺是......
  • 密码学承诺原理与应用 - 概览
    作者:@warm3snowhttps://github.com/warm3snow微信公众号:密码应用技术实战博客园首页:https://www.cnblogs.com/informatics/标签:技术分享模板目录简介承诺方案原理符号定义方案定义常见承诺方案和原理哈希承诺ElGamal承诺Pedersen承诺零知识证明承诺Sigma承诺Sigma承诺正确......
  • AIVA——AI作曲,专注于生成管弦乐、古典、电子和流行音乐
    一、AIVA介绍AIVA(ArtificialIntelligenceVirtualArtist)是一个基于人工智能的音乐生成平台,专门用于帮助用户自动化创作音乐。AIVA能够根据用户的输入生成不同风格的原创音乐,适用于电影、广告、游戏、视频等多种场景。AIVA采用了深度学习和机器学习技术,尤其是生成对抗......
  • CTF密码学基础知识整理
    一.常见编码转换(1)整数转ascii码INT->CHAR:chr(97)CHAR->INT:ord('a')(2)hex转ASCII>>>importbinascii>>>binascii.a2b_hex('666c6167')b'flag'>>>binascii.b2a_hex(b'flag')b'666c6167&......
  • 密码学初识
    咱也是学上密码学了密码?可能有人要说:啊!这个我懂!不就是账号密码什么的嘛可能还有人说:啊!这个我懂!我还会背摩斯密码呢!但是,“密码学”研究的主要是加密与解密的过程它这个“密码”指的不是寻常说的password(口令),而是cryptography历史上,密码学经过了从古典到近代再到现代的发......