前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >单表替换加密

单表替换加密

作者头像
TomatoCool
发布2023-07-30 17:47:39
2930
发布2023-07-30 17:47:39
举报
文章被收录于专栏:TomatoCool

通用特性

  • 明文与密文一一对应
  • 密钥空间较小的情况下,采用暴力破解方式
  • 密文长度足够长的时候,使用词频分析

Caesar

凯撒密码加密时将明文中的每个字母都按照其在字母表中的顺序向后(或向前)移动固定数目(循环移动)得到密文,解密时将密文中的每个字母都按照其在字母表中的顺序向前(或向后)移动固定数目(循环移动)得到明文。

Python脚本:
代码语言:javascript
复制
class Caesar:
    name = 'caesar'
    value = ''

    #  flag为偏移量
    def encode(self, text, flag):
        for c in text:
            if ord('a') <= ord(c) <= ord('z'):
                self.value += chr((ord(c) - ord('a') + int(flag)) % 26 + ord('a'))
            elif ord('A') <= ord(c) <= ord('Z'):
                self.value += chr((ord(c) - ord('A') + int(flag)) % 26 + ord('A'))
            else:
                return 'Err'
        return self.value

    #  flag为偏移量
    def decode(self, text, flag):
        for c in text:
            if ord('a') <= ord(c) <= ord('z'):
                self.value += chr((ord(c) - ord('a') - int(flag)) % 26 + ord('a'))
            elif ord('A') <= ord(c) <= ord('Z'):
                self.value += chr((ord(c) - ord('A') - int(flag)) % 26 + ord('A'))
            else:
                return 'Err'
        return self.value
凯撒密码扩展

基于密钥的凯撒密码,给定一个密钥,将密钥的每一位转换为数字(字母表对应顺序的数字),以每一位的数字作为偏移量进行加密与解密,密钥长度不够时重复密钥来补全长度。

Atbash Cipher

埃特巴什码使用字母表中的最后一个字母代表第一个字母,倒数第二个字母代表第二个字母,以此类推进行替换。

Python脚本
代码语言:javascript
复制
class AtbashCipher:
    name = 'AtbashCipher'
    value = ''

    #  加密与解密使用同一个函数
    def encode(self, text):
        for c in text:
            if ord('a') <= ord(c) <= ord('z'):
                self.value += chr(ord('a') + (ord('z') - ord(c)))
            elif ord('A') <= ord(c) <= ord('Z'):
                self.value += chr(ord('A') + (ord('Z') - ord(c)))
            else:
                return 'Err'
        return self.value

简单替换密码

简单替换密码加密时,将每个明文字母替换为与之唯一对应且不同的字母,因此有26!种替换方式,一般采用词频分析破解。 在线工具:http://quipqiup.com/

仿射密码

对明文的每个字母使用加密函数:

E(x) = (ax + b) (mod m)

其中m为编码系统中字母的数目(一般为26),且a与m互质

易得解密函数为:

D(x) = a^-1(x - b) (mod m)

其中a^-1表示a在mod m下的乘法逆元

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023 年 07 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 通用特性
  • Caesar
    • Python脚本:
      • 凯撒密码扩展
      • Atbash Cipher
        • Python脚本
        • 简单替换密码
        • 仿射密码
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档