Cifras de Feistel

273 views
Skip to first unread message

Jonas Gabriel Meirelles de Freitas

unread,
May 21, 2014, 11:25:03 AM5/21/14
to python...@googlegroups.com
Boa tarde a todos.

Ainda não muito familiarizado com todas as funções disponíveis em python, estou procurando uma maneira de reproduzir a cifra de Feistel, que é utilizada no algoritmo DES por exemplo, porém não consegui localizar nenhum exemplo para a linguagem na Web.

  - Como posso criar blocos de 32 bits de uma string? Digo quebrar uma mensagem de acordo com a quantidade de bits.
  - Preciso encriptar uma mensagem, mas não consigo encontrar uma função para uma criação de S-box injetora, que é necessário aumentar esses blocos para 48 e dividi-los em blocos de 6 bits.

Agradeço antecipadamente pela atenção.


Tadzio Buscácio

unread,
May 27, 2014, 10:53:11 PM5/27/14
to python...@googlegroups.com
como bem disse a Penny ao Leonard:
Eu sei que você pensa que está explicando, mas não está.

sugiro que pesquise sobre o algoritmo Blowfish do pacote PyCrypto.
sugiro também que aprenda um pouco que seja de python.

Tadzio.

Pedro Werneck

unread,
May 27, 2014, 11:27:51 PM5/27/14
to python...@googlegroups.com
2014-05-21 12:25 GMT-03:00 Jonas Gabriel Meirelles de Freitas
<gabrielj...@gmail.com>:
>
> Boa tarde a todos.
>
> Ainda não muito familiarizado com todas as funções disponíveis em python, estou procurando uma maneira de reproduzir a cifra de Feistel, que é utilizada no algoritmo DES por exemplo, porém não consegui localizar nenhum exemplo para a linguagem na Web.

Procure por "pure python DES" no google que você deve achar um monte,
talvez até um que eu mesmo fiz. Mas se você está tendo problemas com
algo básico assim, melhor começar por algo mais elementar. Implemente
um algoritmo de hash simples, por exemplo

> - Como posso criar blocos de 32 bits de uma string? Digo quebrar uma mensagem de acordo com a quantidade de bits.

Você pode simplesmente usar o módulo bitarray, que vai precisar
instalar, ou converter a string para uma lista de longs de 32 bits.
Use a função ord() e faça o bitshift dos bytes de cada grupo de 4
bytes para 24, 16, 8, 0 bits, e some.


> - Preciso encriptar uma mensagem, mas não consigo encontrar uma função para uma criação de S-box injetora, que é necessário aumentar esses blocos para 48 e dividi-los em blocos de 6 bits.

Você quer dizer apenas a expansão ou a P-Box? Não creio que a
bilioteca padrão ou mesmo o bitarray tenha isso, mas acredito que é só
você quebrar o bloco de 32 bits em 8 blocos de 4 bits e em cada bloco
duplicar o primeiro e último bit, criando 8 blocos de 6 bits, e juntar
tudo de novo. 8x6=48.


---
Pedro Werneck

Marco André Lopes Mendes

unread,
May 28, 2014, 6:33:06 AM5/28/14
to Python Brasil
Para ter uma ideia de um cifrador de blocos com estrutura de Feistel, tente o TEA. Ele é bem simples e você vai encontrar implementações bem simples em C e Python.

O Simple AES, que é explicado no livro do Stallings também é simples de implementar em Python. Veja se você encontra. Acredito quem um colega tenha ele implementado.

Um abraço e bons estudos

Marco André




--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar

<*> Para visitar o site do grupo na web, acesse:
    http://groups.google.com/group/python-brasil

<*> Para sair deste grupo, envie um e-mail para:
    python-brasi...@googlegroups.com

---
Você está recebendo esta mensagem porque se inscreveu no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/d/optout.

Mário Neto

unread,
May 28, 2014, 7:58:06 AM5/28/14
to python...@googlegroups.com
Pra estudo, achei bem legal o material que tem aqui:


Você recebeu essa mensagem porque está inscrito no grupo quot;Python Brasil" dos Grupos do Google.

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--
Att. Mário Araújo Chaves Neto
Programmer, Designer and U.I. Engineer

MBA in Design Digital - 2008 - FIC
Analysis and Systems Development - 2011 - Estácio
Design and Implementation of Internet Environments - 2003 - FIC
Reply all
Reply to author
Forward
0 new messages