Códigos e cifras: criptografia para curiosos

Sobre o Jupyter Notebook

Isto é um Jupyter Notebook, um documento interativo. Outro exemplo de documento interativo é uma planilha eletrônica feita no Excel ou no Libre Office.

Um documento interativo tem células que o leitor pode editar, alterando o resultado de outras células.

Código ou cifra?

Há pelo menos três definições para código:

  • Um conjunto de leis ou regulamentações: Código Penal, Código de Edificações
  • Um modo de ...

Texto versus bytes


In [1]:
s = 'CryptoRave'

In [2]:
list(s)


Out[2]:
['C', 'r', 'y', 'p', 't', 'o', 'R', 'a', 'v', 'e']

In [3]:
b = s.encode('ascii')
list(b)


Out[3]:
[67, 114, 121, 112, 116, 111, 82, 97, 118, 101]

In [4]:
z = 'café'
list(z)


Out[4]:
['c', 'a', 'f', 'é']

In [6]:
d = z.encode('utf8')

In [7]:
list(d)


Out[7]:
[99, 97, 102, 195, 169]

In [8]:
s


Out[8]:
'CryptoRave'

In [9]:
b


Out[9]:
b'CryptoRave'

In [10]:
b2 = []
for c in b:
    b2.append(c ^ 42)

In [11]:
b2


Out[11]:
[105, 88, 83, 90, 94, 69, 120, 75, 92, 79]

In [12]:
bytes(b2)


Out[12]:
b'iXSZ^ExK\\O'

In [13]:
b3 = bytes(b2)

In [14]:
b3


Out[14]:
b'iXSZ^ExK\\O'

In [ ]:


In [15]:
b4 = []
for c in b3:
    b4.append(c ^ 42)

In [16]:
bytes(b4)


Out[16]:
b'CryptoRave'

In [ ]: