Skip to content

VigenèreCipher

esse modulo contem as funções para encriptar e decriptar o texto usando Cifra de Vigenère.

decrypt(text, key, space=False)

Decripta o texto usando a chave de decriptação.

Parameters:

Name Type Description Default
text

o texto a ser decriptado.

required
key

a chave de decriptação.

required

Examples:

>>> decrypt('lbmcoc jmss dcx', 'limao')
'atacar base sul'
>>> decrypt('lbmcocjmssdcx', 'limao')
'atacarbasesul'
Source code in bill_cipher_cli/VigenereCipher.py
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
def decrypt(text, key, space: bool = False):
    """
    Decripta o texto usando a chave de decriptação.

    Parameters:
        text: o texto a ser decriptado.
        key: a chave de decriptação.


    Examples:
        >>> decrypt('lbmcoc jmss dcx', 'limao')
        'atacar base sul'

        >>> decrypt('lbmcocjmssdcx', 'limao')
        'atacarbasesul'
    """
    key = keyMatcheLength(key, text)
    result = ""
    for n in range(len(text)):
        if text[n] == " ":
            result += " "
        elif text[n] == "\n":
            result += "\n"
        else:
            ikey = alfbet.index(key[n])
            itxt = alfbet.index(text[n])
            i = (itxt - ikey) % 26
            result += alfbet[i]
    return result

encrpyt(text, key, space=False)

Encripta o texto usando a chave de encriptação.

Parameters:

Name Type Description Default
text str

o texto a ser encriptado.

required
key str

a chave de encriptação.

required
space bool

se True, mantem os espaços.

False

Examples:

>>> encrpyt('atacar base Sul', 'limao', True)
'lbmcoc jmss dcx'
>>> encrpyt('atacar base Sul', 'limao')
'lbmcocjmssdcx'
Source code in bill_cipher_cli/VigenereCipher.py
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
def encrpyt(text: str, key: str, space: bool = False):
    """
    Encripta o texto usando a chave de encriptação.

    Parameters:
        text: o texto a ser encriptado.
        key: a chave de encriptação.
        space: se True, mantem os espaços.

    Examples:
        >>> encrpyt('atacar base Sul', 'limao', True)
        'lbmcoc jmss dcx'
        >>> encrpyt('atacar base Sul', 'limao')
        'lbmcocjmssdcx'
    """
    text = coretion(text, space)
    key = coretion(key, space)
    key = keyMatcheLength(key, text)
    result = ""
    for n in range(len(text)):
        if text[n] == "":
            result += " "
        elif text[n] == "\n":
            result += "\n"
        else:
            ikey = alfbet.index(key[n])
            itxt = alfbet.index(text[n])
            i = (itxt + ikey) % 26
            result += alfbet[i]
    return result

keyMatcheLength(key, text)

repetindo a chave até ter o comprimento do texto a cifra

Parameters:

Name Type Description Default
key str

a chave base

required
text str

o texto a ser cifrado

required

Examples:

>>> keyMatcheLength('LIMAO', 'ATACARBASESUL')
'LIMAOLIMAOLIM'
Source code in bill_cipher_cli/VigenereCipher.py
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
def keyMatcheLength(key: str, text: str):
    """
    repetindo a chave até ter o comprimento do texto a cifra

    Parameters:
        key: a chave base
        text: o texto a ser cifrado

    Examples:
        >>> keyMatcheLength('LIMAO', 'ATACARBASESUL')
        'LIMAOLIMAOLIM'
    """
    keyReturn = ""
    n = 0
    for i in range(len(text)):
        if text[i] in alfbet:
            index = n % len(key)
            keyReturn += key[index]
            n += 1
        elif text[i] == " ":
            keyReturn += " "
        elif text[i] == "\n":
            keyReturn += "\n"
        else:
            keyReturn += "*"
    return keyReturn

vigenere(text, key, mode, space=False)

Encripta ou decripta o texto usando a chave de encriptação.

Parameters:

Name Type Description Default
text str

o texto a ser encriptado ou decriptado.

required
key str

a chave de encriptação.

required
mode

o modo de encriptação ou decriptação.

required

Examples:

>>> vigenere('atacar base Sul', 'limao', 'e', True)
'lbmcoc jmss dcx'
>>> vigenere('lbmcoc jmss dcx', 'limao', 'd')
'atacar base sul'
>>> vigenere('atacar base Sul', 'limao', 'e')
'lbmcocjmssdcx'
>>> vigenere('lbmcjmssdcx', 'limao', 'd')
'atacarbasesul'
Source code in bill_cipher_cli/VigenereCipher.py
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
def vigenere(text: str, key: str, mode, space: bool = False):
    """Encripta ou decripta o texto usando a chave de encriptação.

    Parameters:
        text: o texto a ser encriptado ou decriptado.
        key: a chave de encriptação.
        mode: o modo de encriptação ou decriptação.

    Examples:
        >>> vigenere('atacar base Sul', 'limao', 'e', True)
        'lbmcoc jmss dcx'
        >>> vigenere('lbmcoc jmss dcx', 'limao', 'd')
        'atacar base sul'
        >>> vigenere('atacar base Sul', 'limao', 'e')
        'lbmcocjmssdcx'
        >>> vigenere('lbmcjmssdcx', 'limao', 'd')
        'atacarbasesul'
    """
    match mode:
        case "e":
            return encrpyt(text, key, space)
        case "d":
            return decrypt(text, key)