criptografiaferik


Namecriptografiaferik JSON
Version 0.5 PyPI version JSON
download
home_pagehttps://github.com/eriksoaress/Criptografia
SummaryUma biblioteca para criptografia de mensagens
upload_time2023-03-12 11:11:19
maintainer
docs_urlNone
authorErik Soares e Fernando Santos
requires_python
license
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Criptografia Enigma
Este 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 Implementadas
As 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ção *E*. Para cada coluna *i > 1* multiplicamos *i - 1* vezes a matriz *E* pela 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 matriz *P* e *E* (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  coluna *j* da matriz one-hot, multiplicamos a inversa de *E*  pela coluna  *j*  *(j - 1)* vezes e aṕós isso, multiplicamos por *P*. Dessa forma, conseguimos obter uma matriz, que será convertida na mensagem original. 



## Como baixar 

A biblioteca "criptografia" está disponível para baixar utilizando o pip do python, basta executar:
`pip install criptografiaferik`
<p>Após isso, você poderá utilizar os seguintes métodos:</p>

`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.py

Primeiramente, 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.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/eriksoaress/Criptografia",
    "name": "criptografiaferik",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "",
    "author": "Erik Soares e Fernando Santos",
    "author_email": "",
    "download_url": "https://files.pythonhosted.org/packages/d2/d0/cdda7c822f4e453eb50cceb8d46c0b7b87d83e1960ff802a59909c69e455/criptografiaferik-0.5.tar.gz",
    "platform": null,
    "description": "# Criptografia Enigma\r\nEste projeto consiste em uma implementa\u00c3\u00a7\u00c3\u00a3o 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\u00c3\u00aa-las contra intercepta\u00c3\u00a7\u00c3\u00a3o e decodifica\u00c3\u00a7\u00c3\u00a3o pelos inimigos.\r\n\r\n## Equa\u00c3\u00a7\u00c3\u00b5es Implementadas\r\nAs equa\u00c3\u00a7\u00c3\u00b5es utilizadas foram manipula\u00c3\u00a7\u00c3\u00b5es e multiplica\u00c3\u00a7\u00c3\u00b5es matriciais. Utilizamos matrizes de transforma\u00c3\u00a7\u00c3\u00a3o (matriz identidade com linhas permutadas), para a realiza\u00c3\u00a7\u00c3\u00a3o da cifragem da mensagem. Para isso, seguimos uma determinada regra de multiplica\u00c3\u00a7\u00c3\u00a3o: a mensagem, antes, \u00c3\u00a9 transformada para uma matriz one hot,e iteramos em cada coluna dessa matriz one-hot, fazendo uma multiplic\u00c3\u00a3o por uma matriz de transforma\u00c3\u00a7\u00c3\u00a3o *E*. Para cada coluna *i > 1* multiplicamos *i - 1* vezes a matriz *E* pela mensagem em one-hot. Com isso, ficamos com uma matriz que ser\u00c3\u00a1 usada para a cifragem da mensagem. \r\n\r\nUtilizamos o conceito de matriz inversa, para poder decifrar a mensagem cifrada. Para isso, fizemos a inversa da matriz *P* e *E* (ambas matrizes  de permuta\u00c3\u00a7\u00c3\u00b5es, utilizadas para a cifragem da mensagem) e multiplicamos por uma matriz, que representa a matriz one-hot da mensagem, seguindo uma regra. A regra \u00c3\u00a9 que para  coluna *j* da matriz one-hot, multiplicamos a inversa de *E*  pela coluna  *j*  *(j - 1)* vezes e a\u00e1\u00b9\u2022\u00c3\u00b3s isso, multiplicamos por *P*. Dessa forma, conseguimos obter uma matriz, que ser\u00c3\u00a1 convertida na mensagem original. \r\n\r\n\r\n\r\n## Como baixar \r\n\r\nA biblioteca \"criptografia\" est\u00c3\u00a1 dispon\u00c3\u00advel para baixar utilizando o pip do python, basta executar:\r\n`pip install criptografiaferik`\r\n<p>Ap\u00c3\u00b3s isso, voc\u00c3\u00aa poder\u00c3\u00a1 utilizar os seguintes m\u00c3\u00a9todos:</p>\r\n\r\n`cifrar(msg : str, P : np.array):`\r\nAplica uma cifra simples em uma mensagem recebida como entrada e retorna a mensagem cifrada. P \u00c3\u00a9 a matriz de permuta\u00c3\u00a7\u00c3\u00a3o que realiza a cifra.\r\n- Deve ser realizada uma multiplica\u00c3\u00a7\u00c3\u00a3o matricial entre a matriz de permuta\u00c3\u00a7\u00c3\u00a3o e a mensagem.\r\n\r\n\r\n`de_cifrar(msg : str, P : np.array):`\r\nRecupera uma mensagem cifrada, recebida como entrada, e retorna a mensagem original. P \u00c3\u00a9 a matriz de permuta\u00c3\u00a7\u00c3\u00a3o que realiza a cifra.\r\n- Deve ser realizada uma multiplica\u00c3\u00a7\u00c3\u00a3o matricial entre a inversa da matriz de permuta\u00c3\u00a7\u00c3\u00a3o e a mensagem, efetuando o caminho inverso da cifra.\r\n\r\n\r\n`enigma(msg : str, P : np.array, E : np.array):`\r\nFaz a cifra Enigma na mensagem de entrada usando o cifrador P e o cifrador auxiliar E, ambos representados como matrizes de permuta\u00c3\u00a7\u00c3\u00a3o.\r\n- Deve ser realizada uma multiplica\u00c3\u00a7\u00c3\u00a3o matricial entre o P, E0 * E1*...Ei (sendo i o indice correspondente a letra da mensagem) e a mensagem.\r\n\r\n\r\n`de_enigma(msg : str, P : np.array, E : np.array):`\r\nRecupera 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\u00c3\u00a7\u00c3\u00a3o.\r\n- Deve ser realizada uma multiplica\u00c3\u00a7\u00c3\u00a3o matricial E0 * E1*...Ei (sendo i o indice correspondente a letra da mensagem), o P, e a mensagem .\r\n\r\nPara utilizar cada uma das fun\u00c3\u00a7\u00c3\u00b5es da biblioteca segue as expli\u00c3\u00a7\u00c3\u00b5es:\r\n\r\n- cifrar: Passe a sua mensagem original como m\u00c3\u00a9todo da fun\u00c3\u00a7\u00c3\u00a3o, e a sua matriz permuta\u00c3\u00a7\u00c3\u00a3o, sendo essa \u00c3\u00baltima opcional, haja vista que j\u00c3\u00a1 possui uma pre-definida.\r\n- de_cifrar: Passe a sua mensagem cifrada como m\u00c3\u00a9todo da fun\u00c3\u00a7\u00c3\u00a3o, e a matriz permuta\u00c3\u00a7\u00c3\u00a3o, sendo essa \u00c3\u00baltima opcional, haja vista que j\u00c3\u00a1 possui uma pre-definida.\r\n- enigma: Passe a sua mensagem original como m\u00c3\u00a9todo da fun\u00c3\u00a7\u00c3\u00a3o, a matriz permuta\u00c3\u00a7\u00c3\u00a3o, e a matriz permuta\u00c3\u00a7\u00c3\u00a3o auxiliar, sendo as duas \u00c3\u00baltimas opcionais, haja vista que elas est\u00c3\u00a3o pre-definidas.\r\n- de_enigma: Passe o seu enigma como m\u00c3\u00a9todo da fun\u00c3\u00a7\u00c3\u00a3o, a matriz permuta\u00c3\u00a7\u00c3\u00a3o, e a matriz permuta\u00c3\u00a7\u00c3\u00a3o auxiliar, sendo as duas \u00c3\u00baltimas opcionais, haja vista que elas est\u00c3\u00a3o pre-definidas.\r\n\r\n\r\n## Como Rodar o demo.py\r\n\r\nPrimeiramente, verifique se voc\u00c3\u00aa est\u00c3\u00a1 na pasta criptografia, ap\u00c3\u00b3s isso, abra o seu terminal e execute o seguinte comando: python demo.py\r\nSer\u00c3\u00a1 exibido em seu terminal alguns testes de cada uma das fun\u00c3\u00a7\u00c3\u00b5es que foram implementadas.\r\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Uma biblioteca para criptografia de mensagens",
    "version": "0.5",
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d2d0cdda7c822f4e453eb50cceb8d46c0b7b87d83e1960ff802a59909c69e455",
                "md5": "6839b69d7c031878116da3406ed92241",
                "sha256": "dd2a91f1b7cbe443de697cc52405b887cf204b8eee311aaae040228e53b2eb7f"
            },
            "downloads": -1,
            "filename": "criptografiaferik-0.5.tar.gz",
            "has_sig": false,
            "md5_digest": "6839b69d7c031878116da3406ed92241",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 5868,
            "upload_time": "2023-03-12T11:11:19",
            "upload_time_iso_8601": "2023-03-12T11:11:19.100701Z",
            "url": "https://files.pythonhosted.org/packages/d2/d0/cdda7c822f4e453eb50cceb8d46c0b7b87d83e1960ff802a59909c69e455/criptografiaferik-0.5.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-03-12 11:11:19",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "github_user": "eriksoaress",
    "github_project": "Criptografia",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "criptografiaferik"
}
        
Elapsed time: 0.04495s