-
Notifications
You must be signed in to change notification settings - Fork 0
/
cri-gpg.py
65 lines (53 loc) · 1.89 KB
/
cri-gpg.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#! python3
import gnupg
import shutil
import os
import pandas as pd
import getpass
import sys
def main():
# cria o diretório de trabalho do gpg e importa a chave pública
if os.path.isdir('doctemp'):
shutil.rmtree('doctemp')
gpg = gnupg.GPG(homedir='doctemp')
arquivo_in = input('Arquivo: ')
x = 1
while os.path.exists(arquivo_in) == False:
arquivo_cri = input(f'Arquivo não-encontrado.\nTente de novo ({x+1}/3):\nNome do arquivo para criptografar: ')
x += 1
if x == 3:
print('Arquivo não encontrado.')
sys.exit()
arquivo_cri = input('Arquivo .cri: ')
chave_publica = getpass.getpass('Chave pública: ')
x = 1
while os.path.exists(chave_publica) == False:
chave_publica = getpass.getpass(f'Chave não encontrada.\nTente de novo ({x+1}/3):\nNome da chave: ')
if x == 3:
print('Chave não encontrada')
sys.exit()
key_data = open(chave_publica).read()
key = gpg.import_keys(key_data)
def cri():
# prepara a planilha para a criptografia
if arquivo_in.split('.')[1] == 'xlsx':
temp = pd.ExcelFile(arquivo_in)
planilha = temp.sheet_names[0]
df = temp.parse(planilha)
else:
planilha = arquivo_in
df = pd.read_csv(planilha)
#df.rename(columns={(df.columns[0]):0}, inplace=True)
df.set_index(df.columns[0], inplace=True)
df.to_csv('temp.csv', sep=',', encoding='utf-8')
arquivo = 'temp.csv'
# criptografa a planilha e remove o diretório de trabalho
with open(arquivo, 'rb') as f:
status = gpg.encrypt(f, key.results[0]['fingerprint'], output=arquivo_cri)
print('ok: ', status.ok)
print('status: ', status.status)
shutil.rmtree('doctemp')
os.remove('temp.csv')
cri()
if __name__ == '__main__':
main()