Quickly generates the encryption of texts and files. Using RSA and Fernet as a base.
Project description
DENcrypt
v.0.1.1
Módulo criado com o objetivo de facilitar a criptografia/descriptografia de textos e arquivos.
Utiliza como base as criptografias:
-
RSA (Assimétrica)
- Encrypt (Chave Pública)/Decrypt (Chave Privada)
- Lento; Uso recomendado em conteúdo com tamanho máximo de 256 bytes
-
Fernet (Simétrica)
- EncryptFile (Chave Única)/DecryptFile (Chave Única)
- Rápido; Uso recomendado para arquivos
Requisitos
python = "^3.9"
rsa = "^4.7.2"
cryptography = "^35.0.0"
Instalação
pip install dencrypt
Como Funciona - Via Código
config. inicial do projeto
exemplo/
├─ arquivos/
├─ dados1.txt
├─ dados2.csv
├─ arquivos-crip/
├─ keys/
├─ main.py
main.py
from dencrypt import (
Crypt, # Gera Chaves Pública/Privada RSA e Simétrica Fernet
Encrypt, Decrypt, # Realiza En/Decriptação RSA
EncryptFile, DecryptFile # Realiza En/Decriptação Fernet
)
# 1. Gerando as Chaves
cr = Crypt().generate_all_keys()
cr.pubkey # b'-----BEGIN RSA PUBLIC KEY----- MIIBCgKCAQEAhBF7c...'
cr.privkey # b'-----BEGIN RSA PRIVATE KEY----- MIIEqQIBAAKCAQEAd...'
cr.symmetrickey # b'KqqI5Ncke0TSzBJFrE0SM3xuHz11tv689A1PhmkewkE='
# 1.1. Salvando arquivos das chaves
cr.save_all_keys(location="keys/")
exemplo/
├─ arquivos/
├─ dados1.txt
├─ dados2.csv
├─ arquivos-crip/
├─ keys/
├─ privatekey.key
├─ publickey.key
├─ symmetrickey.key
├─ main.py
# 2. Criptografando Arquivos com a Chave Simétrica
# 2.1. Arquivo dados1.txt
encr = EncryptFile("arquivos/dados1.txt", key="keys/symmetrickey.key")
encr.content # Conteúdo Original: b'Teste 1\nTeste 2\nTest...'
encr.get() # Conteúdo Criptog.: b'\xc3\x8a\xc3\xa2\xc3\xaa\xc3\xae...'
# Salvando arquivo com conteúdo criptografado
encr.save("arquivos-crip/dados1.txt.dencrypt")
# 2.2. Arquivo dados2.csv
encr = EncryptFile("arquivos/dados2.csv", key="keys/symmetrickey.key")
encr.save("arquivos-crip/dados2.csv.dencrypt")
exemplo/
├─ arquivos/
├─ dados1.txt
├─ dados2.csv
├─ arquivos-crip/
├─ dados1.txt.dencrypt
├─ dados2.csv.dencrypt
├─ keys/
├─ privatekey.key
├─ publickey.key
├─ symmetrickey.key
├─ main.py
# 3. Criptografando Chave Simétrica com Chave Pública RSA
encr = Encrypt("keys/symmetrickey.key", pubkey="keys/publickey.key")
encr.save("arquivos-crip/secreta.key")
├─ arquivos-crip/
├─ secreta.key
├─ dados1.txt.dencrypt
├─ dados2.csv.dencrypt
# 4. Descriptografando Arquivos
# 4.1. Descriptografando Chave Simétrica com Chave Privada RSA
skey = Decrypt("arquivos-crip/secreta.key", privkey="keys/privatekey.key")
skey = skey.get() # b'KqqI5Ncke0TSzBJFrE0SM3xuHz11tv689A1PhmkewkE='
# 4.2. Descriptografando dados1.txt.dencrypt
decr = DecryptFile("arquivos-crip/dados1.txt.dencrypt", key=skey)
decr.save("arquivos-crip/dados1.txt")
# 4.3. Descriptografando dados2.csv.dencrypt
decr = DecryptFile("arquivos-crip/dados2.csv.dencrypt", key=skey)
decr.save("arquivos-crip/dados2.csv")
exemplo/
├─ arquivos/
├─ dados1.txt
├─ dados2.csv
├─ arquivos-crip/
├─ secreta.key
├─ dados1.txt
├─ dados1.txt.dencrypt
├─ dados2.csv
├─ dados2.csv.dencrypt
├─ keys/
├─ privatekey.key
├─ publickey.key
├─ symmetrickey.key
├─ main.py
# 5. Realizando comparação de conteúdo
with (
open("arquivos/dados1.txt") as d1_original,
open("arquivos/dados2.csv") as d2_original,
open("arquivos-crip/dados1.txt.dencrypt") as d1_crip,
open("arquivos-crip/dados2.csv.dencrypt") as d2_crip,
open("arquivos-crip/dados1.txt") as d1_decrip,
open("arquivos-crip/dados2.csv") as d2_decrip
):
# Reads
d1_original_read = d1_original.read()
d2_original_read = d2_original.read()
d1_crip_read = d1_crip.read()
d2_crip_read = d2_crip.read()
d1_decrip_read = d1_decrip.read()
d2_decrip_read = d2_decrip.read()
# Original com Criptografado
d1_original_read == d1_crip_read # False
d2_original_read == d2_crip_read # False
# Original com Descriptografado
d1_original_read == d1_decrip_read # True
d2_original_read == d2_decrip_read # True
Download: examples/exemplo.zip
Como Funciona - Via CLI
Exemplos de uso:
+ Verificando Versão
> dencrypt --version | > dencrypt -v
+ Gerando chaves
- Pública RSA (2048), Privada RSA (2048) e Simétrica Fernet
> dencrypt --keys | > dencrypt -k
- Apenas Simétrica Fernet
> dencrypt --keys --norsa | > dencrypt -k -nr
- Apenas Pública/Privada RSA (Tamanho 1024)
> dencrypt --keys --nofer -size 1024 | > dencrypt -k -nf -s 1024
- Pública/Privada RSA (2048) e Simétrica Fernet escolhendo local para salvar
> dencrypt --keys --location "C:/user/User/Desktop" | > dencrypt -l "C:/user/User/Desktop"
- Pú./Pr. RSA (2048) e Sim. Fer. adicionando prefixo e sufixo e alterando
extensão nos nomes dos arquivos das chaves
> dencrypt --keys --prefix "B1_" --sufix "_1B" --ext ".chave"
> dencrypt -k -px "B1_" -sx "_1B" -e ".chave"
Exemplo de resultado padrão sem aplicar "-px", "-sx" e "-e"
- privatekey.key
- publickey.key
- symmetrickey.key
Exemplo de resultado aplicando "-px", "-sx" e "-e"
- B1_privatekey_1B.chave
- B1_publickey_1B.chave
- B1_symmetrickey_1B.chave
+ Encriptando arquivos/conteúdo
- Com chave Simétrica Fernet
> dencrypt --encrypt --input "arquivo.jpg" --skey "symmetrickey.key"
-enc -i -sk
Será gerado um novo arquivo chamado "arquivo.jpg.dencrypt"
- Com chave Pública RSA
> dencrypt -enc -i "arquivo.jpg" --pkey "publickey.key"
-pk
Será gerado um novo arquivo chamado "arquivo.jpg.dencrypt"
! Esta encriptação é limitada ao seu tamanho. Caso a chave seja de
2048 bits (Padrão), suportará um conteúdo de no máximo 256 bytes
- Texto
> ... -i "Texto Secreto" -sk ... --forcetext
-ft
Será gerado um novo arquivo chamado "Texto Secreto.dencrypt" com o texto
criptografado de conteúdo
Porém como podemos observar, o nome do arquivo se mantém com o do conteúdo
secreto, abaixo veja exemplos de como renomear o arquivo com `output`
- Utilizando `--ext` e `--output` para salvar arquivo com nome diferente
? DICA: `--output` possui alguns format strings
%FILENAME = Retorna o nome completo do arquivo original - Ex: "arquivo.jpg"
%FILEEXT = Retorna apenas a extensão do arquivo original - Ex: ".jpg"
%FILE = Retorna o nome do arquivo original - Ex: "arquivo"
%EXT" = Retorna a extensão enviada através do `--ext` - Por padrão é ".dencrypt"
%DATETIME = Retorna a data do momento, seguinto o formado: ddmmaaaahhmmss
%RAND" = Retorna um número aleatório entre 100.000 e 999.999
> ... --ext ".louco" --output "a"
-e -o
Será gerado um novo arquivo chamado "a.louco" em vez de "arquivo.jpg.dencrypt"
> ... -e ".louco" -o "%FILENAME%EXT" | > ... -e ".teste" -o "%FILE_%DATETIME%EXT"
Resultará em "arquivo.jpg.louco" | Resultará em "arquivo_281020210252.teste"
> ... --ext ".abcabc" --output "%RAND%EXT" | > ... --ext ".abcabc"
Resultará em "734582.abcabc" | Resultará em "arquivo.jpg.abcabc"
- Múltiplos arquivos
> dencrypt --encrypt --allfiles --skey "symmetrickey.key"
-af
Todos arquivos da pasta atual serão criptografados e salvos em uma
nova pasta (criada no mesmo diretório) chamada "dencrypt_encrypt_202110280323"
com a data atual no final
O nome dos novos arquivos seguirá o formato "nome.ext.dencrypt", Ex: "imagem.jpg.dencrypt"
! Os arquivos originais ainda serão mantidos
> ... --allfiles ... --extignore "jpg, png, py"
-eig
Realizará o mesmo processo anterior, porém ignorando arquivos com as extensões informadas
.jpg, .png e .py
- Comandos persistentes
--replace ou -r = Força a substituição de qualquer arquivo existente com o mesmo nome
--force ou -f = Ignora qualquer aviso, e avança automaticamente
+ Decriptando arquivos/conteúdo
- Funcionamento semelhante ao `--encrypt`, porém, agora deve ser passado via `--input`
o arquivo já criptografado
- Com chave Simétrica Fernet
> dencrypt --decrypt --input "arquivo.jpg.dencrypt" --skey "symmetrickey.key"
-dec -i -sk
Será gerado um novo arquivo chamado "arquivo.jpg"
- Com chave PRIVADA RSA
> dencrypt -dec -i "arquivo.jpg.dencrypt" --pkey "privatekey.key"
-pk
Será gerado um novo arquivo chamado "arquivo.jpg"
...
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dencrypt-0.1.1.tar.gz.
File metadata
- Download URL: dencrypt-0.1.1.tar.gz
- Upload date:
- Size: 15.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.11 CPython/3.9.7 Linux/4.4.0-19041-Microsoft
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3caef9090fae6c3f06a57c2c1c2cf88f26c0b45bb20e5a76a9cf905236eedb0c
|
|
| MD5 |
d3543fde3f5a15eeb5f5ce1486576efa
|
|
| BLAKE2b-256 |
b91b658abb5da113cb349107adcf2c30d0eb78212b1e41a619052bc31c867345
|
File details
Details for the file dencrypt-0.1.1-py3-none-any.whl.
File metadata
- Download URL: dencrypt-0.1.1-py3-none-any.whl
- Upload date:
- Size: 19.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.11 CPython/3.9.7 Linux/4.4.0-19041-Microsoft
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e1f2ccda5bc8bb4643d5fb9568b8f5118a66d98be7311fe0fb86003ec0b6aef8
|
|
| MD5 |
46e3dfdd3aa86e5184c2f09dd3247b70
|
|
| BLAKE2b-256 |
7b28ce8cc4635a0638a97a2a882854f4b6c7baf87570ae99bf8ca3f94d67c267
|