密码学---常见的其他密码

✨费纳姆密码:加解密都需要密钥 ,以二进制形式表示的密码。(密钥多是一次性的,称位一次性密码本)

加密过程:

python 复制代码
char_num = {'A': '1000001', 'B': '1000010', 'C': '1000011', 'D': '1000100',
            'E': '1000101', 'F': '1000110', 'G': '1000111', 'H': '1001000',
            'I': '1001001', 'J': '1001010', 'K': '1001011', 'L': '1001100',
            'M': '1001101', 'N': '1001110', 'O': '1001111', 'P': '1010000',
            'Q': '1010001', 'R': '1010010', 'S': '1010011', 'T': '1010100',
            'U': '1010101', 'V': '1010110', 'W': '1010111', 'X': '1011000',
            'Y': '1011001', 'Z': '1011010'}

num_char = {'1000001': 'A',  '1000010': 'B', '1000011': 'C', '1000100': 'D',
            '1000101': 'E', '1000110': 'F', '1000111': 'G', '1001000': 'H',
            '1001001': 'I', '1001010': 'J', '1001011': 'K', '1001100': 'L',
            '1001101': 'M', '1001110': 'N', '1001111': 'O', '1010000': 'P',
            '1010001': 'Q', '1010010': 'R', '1010011': 'S', '1010100': 'T',
            '1010101': 'U', '1010110': 'V', '1010111': 'W', '1011000': 'X',
            '1011001': 'Y', '1011010': 'Z', }


# 转换
def txt_num(txt):
    txt = txt.upper()
    result = ""
    for i in txt:
        result = result + char_num[i]
    return  result


# 最终数字转换为字母
def num_list(txt):
    num = 0
    s = []
    while True:
        s.append(txt[num:num + 7])
        num += 7
        if num > len(txt) - 7:
            break
    return s


# 加密 文本内容
def encipher(txt, k):
    result = ''
    if txt.isalpha() and k.isalpha():
        txt = txt_num(txt)
        k = txt_num(k)
        j = len(k)
        for i in range(0, len(txt)):
            if txt[i] == k[i % j]:
                result += '0'
            else:
                result += '1'
    else:
        result = "明文与密钥应为纯字母"
    return result


# 解密 文本为数字格式
def decipher(txt, k):
    result = ''
    if k.isalpha():
        k = txt_num(k)
        j = len(k)
        for i in range(0, len(txt)):
            if txt[i] == k[i % j]:
                result += '0'
            else:
                result += '1'
        result = num_list(result)
        result_char = ""
        for i in result:
            try:
                result_char = result_char + num_char[i]
            except KeyError:
                result_char = result_char + '?'
        result = result_char
    else:
        result = "密钥应为纯字母"
    return  result


if __name__ == '__main__':
    # 加解密,密文text,明文text_2
    text = ''
    # 读文本文件
    key = "polar"
    text_2 = "polarCTF"
    print(encipher(text_2, key))
    # print(decipher(text, key))

解密过程:

python 复制代码
char_num = {'A': '1000001', 'B': '1000010', 'C': '1000011', 'D': '1000100',
            'E': '1000101', 'F': '1000110', 'G': '1000111', 'H': '1001000',
            'I': '1001001', 'J': '1001010', 'K': '1001011', 'L': '1001100',
            'M': '1001101', 'N': '1001110', 'O': '1001111', 'P': '1010000',
            'Q': '1010001', 'R': '1010010', 'S': '1010011', 'T': '1010100',
            'U': '1010101', 'V': '1010110', 'W': '1010111', 'X': '1011000',
            'Y': '1011001', 'Z': '1011010'}

num_char = {'1000001': 'A',  '1000010': 'B', '1000011': 'C', '1000100': 'D',
            '1000101': 'E', '1000110': 'F', '1000111': 'G', '1001000': 'H',
            '1001001': 'I', '1001010': 'J', '1001011': 'K', '1001100': 'L',
            '1001101': 'M', '1001110': 'N', '1001111': 'O', '1010000': 'P',
            '1010001': 'Q', '1010010': 'R', '1010011': 'S', '1010100': 'T',
            '1010101': 'U', '1010110': 'V', '1010111': 'W', '1011000': 'X',
            '1011001': 'Y', '1011010': 'Z', }


# 转换
def txt_num(txt):
    txt = txt.upper()
    result = ""
    for i in txt:
        result = result + char_num[i]
    return  result


# 最终数字转换为字母
def num_list(txt):
    num = 0
    s = []
    while True:
        s.append(txt[num:num + 7])
        num += 7
        if num > len(txt) - 7:
            break
    return s


# 加密 文本内容
def encipher(txt, k):
    result = ''
    if txt.isalpha() and k.isalpha():
        txt = txt_num(txt)
        k = txt_num(k)
        j = len(k)
        for i in range(0, len(txt)):
            if txt[i] == k[i % j]:
                result += '0'
            else:
                result += '1'
    else:
        result = "明文与密钥应为纯字母"
    return result


# 解密 文本为数字格式
def decipher(txt, k):
    result = ''
    if k.isalpha():
        k = txt_num(k)
        j = len(k)
        for i in range(0, len(txt)):
            if txt[i] == k[i % j]:
                result += '0'
            else:
                result += '1'
        result = num_list(result)
        result_char = ""
        for i in result:
            try:
                result_char = result_char + num_char[i]
            except KeyError:
                result_char = result_char + '?'
        result = result_char
    else:
        result = "密钥应为纯字母"
    return  result


if __name__ == '__main__':
    # 加解密,密文text,明文text_2
    text = '00000000000000000000000000000000000001001100110110001010'
    # 读文本文件
    key = "polar"
    text_2 = "polarCTF"
    # print(encipher(text_2, key))
    print(decipher(text, key))

✨杰弗逊转轮加密:需要密钥 并用很多行乱序英文字母表示密文的密码。首先要将密文按密钥顺序进行调整,再根据密文顺序整每行字符串即可得到明文。

方法1:

除了每行第一个字母组成的,依次往后向下寻找有意义的字符串,直到找到为止!!!

方法2:

python 复制代码
import re
PasswordList = '''
1: < ZWAXJGDLUBVIQHKYPNTCRMOSFE <
2: < KPBELNACZDTRXMJQOYHGVSFUWI <
3: < BDMAIZVRNSJUWFHTEQGYXPLOCK <
4: < RPLNDVHGFCUKTEBSXQYIZMJWAO <
5: < IHFRLABEUOTSGJVDKCPMNZQWXY <
6: < AMKGHIWPNYCJBFZDRUSLOQXVET <
7: < GWTHSPYBXIZULVKMRAFDCEONJQ <
8: < NOZUTWDCVRJLXKISEFAPMYGHBQ <
9: < XPLTDSRFHENYVUBMCQWAOIKZGJ <
10: < UDNAJFBOWTGVRSCZQKELMXYIHP <
11: < MNBVCXZQWERTPOIUYALSKDJFHG <
12: < LVNCMXZPQOWEIURYTASBKJDFHG <
13: < JZQAWSXCDERFVBGTYHNUMKILOP <
'''
ciphertext = "UOFJLBLSXJPJY"  # 存放密文
content = re.findall(r'<(.*?)<', PasswordList, re.S)  # 匹配所有的密码表字符串
key = [2, 3, 7, 5, 13, 12, 9, 1, 8, 10, 4, 11, 6]   # 密钥
list = []   # 定义空列表list,和空串ans
ans = ""
for i in range(13):
    index = content[key[i]-1].index(ciphertext[i])
    list.append((index))
for i in range(0, 26):
    flag = ""
    for j in range(13):
        flag += content[key[j]-1][(list[j]+i) % 26]
    print(flag)

从出来的结果找出有意义的那串字符即为明文!!!

✨常见图形密码---猪圈密码

变种形式1:

变种形式2:

✨圣堂武士密码:

✨旗语密码:

✨盲文:

✨精灵语密码:

✨跳舞的人密码:

✨夏多密码:(下面的四个是方向指示符号,向上,右,下,左旋转,碰到表示将密文整体进行该方向的旋转)

✨银河密码:

相关推荐
大方子9 小时前
【PolarCTF】rce1
网络安全·polarctf
枷锁—sha11 小时前
Burp Suite 抓包全流程与 Xray 联动自动挖洞指南
网络·安全·网络安全
聚铭网络11 小时前
聚铭网络再度入选2026年度扬州市网络和数据安全服务资源池单位
网络安全
darkb1rd14 小时前
八、PHP SAPI与运行环境差异
开发语言·网络安全·php·webshell
世界尽头与你18 小时前
(修复方案)基础目录枚举漏洞
安全·网络安全·渗透测试
枷锁—sha2 天前
【SRC】SQL注入快速判定与应对策略(一)
网络·数据库·sql·安全·网络安全·系统安全
liann1192 天前
3.1_网络——基础
网络·安全·web安全·http·网络安全
ESBK20252 天前
第四届移动互联网、云计算与信息安全国际会议(MICCIS 2026)二轮征稿启动,诚邀全球学者共赴学术盛宴
大数据·网络·物联网·网络安全·云计算·密码学·信息与通信
旺仔Sec2 天前
一文带你看懂免费开源 WAF 天花板!雷池 (SafeLine) 部署与实战全解析
web安全·网络安全·开源·waf
七牛云行业应用2 天前
Moltbook一夜崩盘:150万密钥泄露背后的架构“死穴”与重构实战
网络安全·postgresql·架构·高并发·七牛云