CTF-Crypto 密码解密python脚本(一)

凯撒密码

# 模块安装
pip install pycipher
from pycipher import Caesar

plaintext = Caesar(3).decipher(ciphertext)
ciphertext = Caesar(3).encipher(plaintext)

摩斯密码

# 模块安装
pip install morse-talk
import morse_talk as mtalk
 
# Encoding in morse
>>> mtalk.encode('Alpha Ranger 45 departed')
'.-   .-..   .--.   ....   .-       .-.   .-   -.   --.   .   .-.       ....-   .....       -..   .   .--.   .-   .-.   -   .   -..'
 
# Encoding using binary pattern
>>> mtalk.encode('Alpha Ranger 45 knocked down', encoding_type='binary')
'101110001011101010001011101110100010101010001011100000001011101000101110001110100011101110100010001011101000000010101010111000101010101000000011101011100011101000111011101110001110101110100011101011100010001110101000000011101010001110111011100010111011100011101'
 
# Decoding a code encoded in morse
>>> code = '-...   ---   --   -...       -..-       .--.   --'
>>> mtalk.decode(code)
'BOMB X PM'
 
# Decoding a binary pattern
>>> s_bin = mtalk.encode('Alpha Ranger 45 knocked down', encoding_type='binary')
>>> mtalk.decode(s_bin, encoding_type='binary')
'ALPHA RANGER 45 KNOCKED DOWN'

栅栏密码

from pycipher import Railfence
 
print Railfence(4).encipher('HELLOWORLD')
print Railfence(4).decipher('HOEWRLOLLD')

Vigenere

from pycipher import Vigenere
  
print Vigenere('CULTURE').encipher('helloworld')
print Vigenere('CULTURE').decipher('jyweinstfo')

Gronsfeld

from pycipher import Gronsfeld
 
print Gronsfeld([2,20,11,19,20,17,4]).encipher('helloworld')
print Gronsfeld([2,20,11,19,20,17,4]).decipher('jyweinstfo')

培根密码

# Python program to implement Baconian cipher
 
'''This script uses a dictionary instead of 'chr()' & 'ord()' function'''
 
'''
Dictionary to map plaintext with ciphertext
(key:value) => (plaintext:ciphertext)
This script uses the 26 letter baconian cipher
in which I, J & U, V have distinct patterns
'''
lookup = {'A':'aaaaa', 'B':'aaaab', 'C':'aaaba', 'D':'aaabb', 'E':'aabaa',
        'F':'aabab', 'G':'aabba', 'H':'aabbb', 'I':'abaaa', 'J':'abaab',
        'K':'ababa', 'L':'ababb', 'M':'abbaa', 'N':'abbab', 'O':'abbba',
        'P':'abbbb', 'Q':'baaaa', 'R':'baaab', 'S':'baaba', 'T':'baabb',
        'U':'babaa', 'V':'babab', 'W':'babba', 'X':'babbb', 'Y':'bbaaa', 'Z':'bbaab'}
 
# Function to encrypt the string according to the cipher provided
def encrypt(message):
    cipher = ''
    for letter in message:
        # checks for space
        if(letter != ' '):
            # adds the ciphertext corresponding to the 
            # plaintext from the dictionary
            cipher += lookup[letter]
        else:
            # adds space
            cipher += ' '
 
    return cipher
 
# Function to decrypt the string 
# according to the cipher provided
def decrypt(message):
    decipher = ''
    i = 0
 
    # emulating a do-while loop
    while True :
        # condition to run decryption till 
        # the last set of ciphertext
        if(i < len(message)-4):
            # extracting a set of ciphertext
            # from the message
            substr = message[i:i + 5]
            # checking for space as the first 
            # character of the substring
            if(substr[0] != ' '):
                '''
                This statement gets us the key(plaintext) using the values(ciphertext)
                Just the reverse of what we were doing in encrypt function
                '''
                decipher += list(lookup.keys())[list(lookup.values()).index(substr)]
                i += 5 # to get the next set of ciphertext
 
            else:
                # adds space
                decipher += ' '
                i += 1 # index next to the space
        else:
            break # emulating a do-while loop
 
    return decipher
 
def main():
    message = "hello world"
    result = encrypt(message.upper())
    print (result)
 
    message = "AABBBAABAAABABBABABBABBBABABBAABBBABAAABABABBAAABB"
    result = decrypt(message.lower())
    print (result)
 
#Executes the main function
if __name__ == '__main__':
    main()

福博特密码

from pycipher import Beaufort
 
print Beaufort('CULTURE').encipher('HELLOWORLD')
print Beaufort('CULTURE').decipher('VQAIGVQLJI')

列移位密码

from pycipher import ColTrans
 
print ColTrans("HELLO").encipher('HELLOWORLD')
print ColTrans("HELLO").decipher('EOHWLRLLOD')
  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小武搞渗透

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值