[Resolvido] Cifra / Decifra com password - Python - Portugal-a-Programar
[Resolvido] Cifra / Decifra com password
August 3, 2014 in Python
Estou a cifrar dados, passando os dados a cifrar e uma password (e.g. chave simetrica) e depois efetuar a respetiva decifra... até aqui tudo certo, mas a decifra e efetuada sobre a cifra (resultado da mesma), obtendo o resultado sem problemas.
Mas o que procuro é que aquando da decifra a mesma só seja efetuada colocando a password original com que foi feita a cifra. Só consigo encontrar formas de efetuar como indico na descrição acima, não indo de encontro ao que pretendo.
Obrigado por toda e qualquer ajuda.
O que pedes é impossível.
O que é possível é gravares, juntamente com a cifra, algo que te ajude a fazer isso.
Por exemplo, podes guardar, na mensagem, um texto em claro (aleatório) sem cifra e o seu correspondente cifrado. Usando a password indicada, tentas decifrar esse texto de que tens os 2. Se forem diferentes, a password está errada, não vale a pena continuar.
Há várias maneiras de fazer isto, a que indiquei é simplesmente 1 maneira.
Eu estou a cifrar dados utilizando uma password (chave simetrica). A intenção é depois outro utilizador que tem conhecimento da password (chave simetrica) fazer uso desta para poder decifrar os dados. Porque como está no codigo abaixo (forma que estou a utilizar) efetuo diretamente a decifra sem precisar de inserir a password com que foi cifrada, tornando irrelevante utilizar uma password.
##### CIFRAR #####
# definicao da password a partir da qual se vai criar uma chave
global password1
password1 = raw_input('Enter password: ')
# geracao da chave de 16bytes (AES-128) a partir da password
# criacao do criptograma (dados cifrados)
cipher1 = AES.new(key1, AES.MODE_CFB, iv1) #não precisa do iv usando o modo AES.MODE_ECB, mas este não é tão seguro e pode expor padrões da mensagem cifrada
global criptogram1
##### DECIFRAR #####
cipher1 = AES.new(key1, AES.MODE_CFB, criptogram1)
data_recov1 = cipher1.decrypt(criptogram1)
print "\nRecuperacao dos dados limpos do Ficheiro: " , data_recov1
Separa as scripts: cria uma para cifrar e outra para decifrar.
Ou então, depois de usares a chave, elimina-a. Caso contrário, é obvio que vais continuar a ter a chave no programa, visto que precisaste dela para cifrar a mensagem.
Algumas definições que podes passar a usar para tornar as tuas mensagens mais claras: os dados a cifrar são habitualmente denominados de mensagem, e o resultado de cifrares uma mensagem é habitualmente denominado de criptograma.
Entretanto consegui perceber melhor alguma coisas que me estavam a falhar... faltou-me uma interpretação correta do que pretendia e do que estava de fato a fazer. Obrigado pelas dicas que ajudaram a perceber o que falhava.