Package: criptografiaferik
Criptografia EnigmaEste projeto consiste em uma implementaÃ§Ã£o de um cifrador e decifrador Enigma, um famoso dispositivo de criptografia usado pela Alemanha nazista durante a Segunda Guerra Mundial. O objetivo desse dispositivo era codificar mensagens militares e protegÃª-las contra interceptaÃ§Ã£o e decodificaÃ§Ã£o pelos inimigos.EquaÃ§Ãµes ImplementadasAs equaÃ§Ãµes utilizadas foram manipulaÃ§Ãµes e multiplicaÃ§Ãµes matriciais. Utilizamos matrizes de transformaÃ§Ã£o (matriz identidade com linhas permutadas), para a realizaÃ§Ã£o da cifragem da mensagem. Para isso, seguimos uma determinada regra de multiplicaÃ§Ã£o: a mensagem, antes, Ã© transformada para uma matriz one hot,e iteramos em cada coluna dessa matriz one-hot, fazendo uma multiplicÃ£o por uma matriz de transformaÃ§Ã£oE. Para cada colunai > 1multiplicamosi - 1vezes a matrizEpela mensagem em one-hot. Com isso, ficamos com uma matriz que serÃ¡ usada para a cifragem da mensagem.Utilizamos o conceito de matriz inversa, para poder decifrar a mensagem cifrada. Para isso, fizemos a inversa da matrizPeE(ambas matrizes  de permutaÃ§Ãµes, utilizadas para a cifragem da mensagem) e multiplicamos por uma matriz, que representa a matriz one-hot da mensagem, seguindo uma regra. A regra Ã© que para  colunajda matriz one-hot, multiplicamos a inversa deEpela colunaj(j - 1)vezes e aá¹•Ã³s isso, multiplicamos porP. Dessa forma, conseguimos obter uma matriz, que serÃ¡ convertida na mensagem original.Como baixarA biblioteca "criptografia" estÃ¡ disponÃ­vel para baixar utilizando o pip do python, basta executar:pip install criptografiaferikApÃ³s isso, vocÃª poderÃ¡ utilizar os seguintes mÃ©todos:cifrar(msg : str, P : np.array):Aplica uma cifra simples em uma mensagem recebida como entrada e retorna a mensagem cifrada. P Ã© a matriz de permutaÃ§Ã£o que realiza a cifra.Deve ser realizada uma multiplicaÃ§Ã£o matricial entre a matriz de permutaÃ§Ã£o e a mensagem.de_cifrar(msg : str, P : np.array):Recupera uma mensagem cifrada, recebida como entrada, e retorna a mensagem original. P Ã© a matriz de permutaÃ§Ã£o que realiza a cifra.Deve ser realizada uma multiplicaÃ§Ã£o matricial entre a inversa da matriz de permutaÃ§Ã£o e a mensagem, efetuando o caminho inverso da cifra.enigma(msg : str, P : np.array, E : np.array):Faz a cifra Enigma na mensagem de entrada usando o cifrador P e o cifrador auxiliar E, ambos representados como matrizes de permutaÃ§Ã£o.Deve ser realizada uma multiplicaÃ§Ã£o matricial entre o P, E0 * E1*...Ei (sendo i o indice correspondente a letra da mensagem) e a mensagem.de_enigma(msg : str, P : np.array, E : np.array):Recupera uma mensagem cifrada como Enigma assumindo que ela foi cifrada usando o cifrador P e o cifrador auxiliar E, ambos representados como matrizes de permutaÃ§Ã£o.Deve ser realizada uma multiplicaÃ§Ã£o matricial E0 * E1*...Ei (sendo i o indice correspondente a letra da mensagem), o P, e a mensagem .Para utilizar cada uma das funÃ§Ãµes da biblioteca segue as expliÃ§Ãµes:cifrar: Passe a sua mensagem original como mÃ©todo da funÃ§Ã£o, e a sua matriz permutaÃ§Ã£o, sendo essa Ãºltima opcional, haja vista que jÃ¡ possui uma pre-definida.de_cifrar: Passe a sua mensagem cifrada como mÃ©todo da funÃ§Ã£o, e a matriz permutaÃ§Ã£o, sendo essa Ãºltima opcional, haja vista que jÃ¡ possui uma pre-definida.enigma: Passe a sua mensagem original como mÃ©todo da funÃ§Ã£o, a matriz permutaÃ§Ã£o, e a matriz permutaÃ§Ã£o auxiliar, sendo as duas Ãºltimas opcionais, haja vista que elas estÃ£o pre-definidas.de_enigma: Passe o seu enigma como mÃ©todo da funÃ§Ã£o, a matriz permutaÃ§Ã£o, e a matriz permutaÃ§Ã£o auxiliar, sendo as duas Ãºltimas opcionais, haja vista que elas estÃ£o pre-definidas.Como Rodar o demo.pyPrimeiramente, verifique se vocÃª estÃ¡ na pasta criptografia, apÃ³s isso, abra o seu terminal e execute o seguinte comando: python demo.py
SerÃ¡ exibido em seu terminal alguns testes de cada uma das funÃ§Ãµes que foram implementadas.