Um programa Go que pode ser executado no terminal para criptografar e descriptografar arquivos. Use o comando encrypt
para a primeira operação, decrypt
para a segunda,
e help
para aprender mais sobre o programa, se necessário. Qualquer tipo de arquivo pode ser criptografado. O projeto original é de autoria de @AkhilSharma90.
O algoritmo utilizado no programa é o AES (Advanced Encryption Standard), em seu modo GCM (Galois/Counter Mode). O modo de funcionamento é o seguinte:
- Após o arquivo ser aberto e seu conteúdo lido, uma chave é gerada a partir da senha fornecida pelo usuário. O algoritmo utilizado para isso é o PBKDF2, que aplica uma função específica a uma senha várias vezes. Para garantir que o processo seja aleatório (a mesma senha irá gerar chaves diferentes em diferentes tentativas), é criado um nonce, um número aleatório usado somente uma vez na operação.
- A seguir, a chave derivada criada é utilizada para criar blocos de cifra (bytes criptografados). O modo GCM é aplicado.
- Por fim, o processo é finalizado com a função
Seal
para criptografar. - O novo arquivo é criado, sobrescrevendo o anterior, e o nonce é adicionado em seus dados, para que, no processo de descriptografia, possamos lê-lo e recriar o arquivo.
O processo de descriptografia é basicamente o inverso.