Criptografia: cifras hebraicas (Atbash, Atbah e Albam) em Python

Você já leu a Bíblia? Não? Mas deve saber de que livro estou falando.

Se você já a leu, deve ter lido o livro do profeta Jeremias, certo?

Pois bem, neste livro, algumas palavras do texto foram cifradas utilizando a cifra Atbash.

O Atbash vem da grafia das letras hebraicas Aleph, Tav, Beth, Shin. O seu funcionamento é bem simples: a primeira letra do alfabeto é trocada pela última, a segunda letra pela penúltima e assim sucessivamente. Abaixo um resumo com os caracteres latinos do alfabeto português:

texto plano  - |a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|
cifra Atbash - |Z|Y|X|W|V|U|T|S|R|Q|P|O|N|M|L|K|J|I|H|G|F|E|D|C|B|A|

Como exemplo, a palavra biblia em Atbash fica: YRYORZ.

Há duas outras cifras hebraicas chamadas Atbah e Albam.

Seguindo o mesmo procedimento a cifra Atbah vem da grafia das letras hebraicas Aleph, Teth, Beth e Heth e a cifra Albam das letras  Aleph, Lamed, Beth e Mem.

Para cifrar com Albam, primeiro divide-se o alfabeto normal em duas metades. A segunda metade do alfabeto é colocada na frente da primeira metade e a cifragem se dá pela troca da primeira letra do alfabeto normal pela primeira letra deste alfabeto trocado; a segunda letra do alfabeto normal pela segunda do alfabeto trocado e assim por diante. A tabela abaixo demonstra isto melhor.

texto plano - |a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|
cifra Albam - |N|O|P|Q|R|S|T|U|V|W|X|Y|Z|A|B|C|D|E|F|G|H|I|J|K|L|Z|

Então, a palavra biblia em Albam fica: OVOYVN.

Já a cifra Atbah segue uma sequência própria para a cifragem. Abaixo a tabela com a cifra.

texto plano - |a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|
cifra Atbah - |I|H|G|F|N|D|C|B|A|R|Q|P|O|E|M|L|K|J|Z|Y|X|W|V|U|T|S|

A palavra biblia em Albam: HAHPAI.

CÓDIGO

Resolvi implementar as três cifras numa classe só e a chamei de hebrew.py. A classe descarta os espaços em branco e não trata caracteres especiais.

class HebrewCipher:
    atbash = 'ZYXWVUTSRQPONMLKJIHGFEDCBA'
    albam = 'NOPQRSTUVWXYZABCDEFGHIJKLM'
    atbah = 'IHGFNDCBARQPOEMLKJZYXWVUTS'

    def __init__(self):
        self.__plain = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

    def encrypt(self, text, cipher):
        ''' (HebrewCipher, str, str) -> str
        Retorna o texto cifrado com
        a cifra hebraica escolhida
        '''

        txt = ''
        text = text.replace(' ', '').upper()
        for ch in text:
            idx = self.__plain.find(ch)
            txt += cipher[idx]
        return txt

    def decrypt(self, text, cipher):
        ''' (HebrewCipher, str, str) -> str
        Retorna o texto decifrado com
        a cifra hebraica escolhida
        '''
        return self.encrypt(text, cipher).lower()

BitBin

TESTES

>>> from hebrew import HebrewCipher
>>> HebrewCipher().encrypt('o livro cristao e a biblia', HebrewCipher.atbash)
'LOREILXIRHGZLVZYRYORZ'
>>> HebrewCipher().decrypt('LOREILXIRHGZLVZYRYORZ', HebrewCipher.atbash)
'olivrocristaoeabiblia'
>>> HebrewCipher().encrypt('o livro cristao e a biblia', HebrewCipher.albam)
'BYVIEBPEVFGNBRNOVOYVN'
>>> HebrewCipher().decrypt('BYVIEBPEVFGNBRNOVOYVN', HebrewCipher.albam)
'olivrocristaoeabiblia'
>>> HebrewCipher().encrypt('o livro cristao e a biblia', HebrewCipher.atbah)
'MPAWJMGJAZYIMNIHAHPAI'
>>> HebrewCipher().decrypt('MPAWJMGJAZYIMNIHAHPAI', HebrewCipher.atbah)
'olivrocristaoeabiblia'

Fontes:
http://www.numaboa.com.br/criptografia/124-substituicao-simples/168-atbash
http://en.wikipedia.org/wiki/Atbash
http://mysteriouswritings.com/the-atbash-cipher-and-jeremiah-511/

Sobre Fábio Medeiros

Meu nome é Fábio Medeiros. Cearense de nascença e com muito orgulho (daí o nome do blog, uma referência à minha terra). Sou formado em Tecnologia em Telemática, pelo CEFET-CE. Escrevi alguns artigos sobre programação JavaME e dispositivos portáteis (PDA) para a revista WebMobile.
Esse post foi publicado em Criptografia e marcado , , , , . Guardar link permanente.

Uma resposta para Criptografia: cifras hebraicas (Atbash, Atbah e Albam) em Python

  1. Pingback: Criptografia: cifras de transposição e cifras de substituição | siriarah

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s