Jump to content

POWERED BY:

Archived

This topic is now archived and is closed to further replies.

Bruno Alano

Simples Algoritmo de Criptografia em Python

Recommended Posts

Pequeno código que desenvolvi que mostra como desenvolver um pequeno Algoritmo de Criptografia em Python sem utilizar nenhuma biblioteca extra do mesmo. O código está bem documentado e dúvidas podem ser tiradas aqui.

 

#-*- coding: utf-8 -*-

# 	openHash Library
#	- - - - - - - - -
# 	by Bruno Alano
#
# Description: Cryptography Library to Encode Strings and Binary Data

# ==============================
# Para cada letra adicionada
# deverá adicionar uma para o
# cKeys
# ==============================
keys = ['a', 'A', 'b', 'B'] # Dicionário
cKeys = ['*/747/', '*/139/', '*/8423/', '*/8787/'] # Dicionário Criptografado (deve iniciar com *)

# ==============================
# 		Váriaveis Nulas
# ==============================
encryp = ''
decryp = ''

# ==============================
#			Funções
# ==============================

def simpleEncrypt(string):
# Carrega dicionários
global keys
global cKeys

# Carrega váriavel global
global encryp

# Para cada letra da 'string'
for letter in string:
	# Procura posição desta letra (tem que ter no dicionário),
	# e pega a posição
	sid = keys.index(letter)

	# Transforma a letra na mesma posição do Dicionário
	# Criptografado
	encryp = encryp + cKeys[sid]

print (encryp)

def simpleDecrypt(string):
# Carrega dicionários
global keys
global cKeys

# Carrega váriavel global
global decryp

# Separa a váriavel criptografado por "*"
dec = string.split('*')

# Para cada Array do 'dec'
for setConj in dec:
	# Remove Array vazia
	if (setConj == ''):
		continue

	# Adiciona o * para fazer a busca
	decSet = '*' + setConj
	# Procura no Cicionário Criptografado
	did = cKeys.index(decSet)
	# Transforma a letra na mesma posição do Dicionário
	decryp = decryp + keys[did]

print (decryp)

# ==============================
#			EXEMPLOs
# ==============================

simpleEncrypt("AbBa") #Retorna: */139/*/8423/*/8787/*/747/ 
simpleDecrypt("*/139/*/8423/*/8787/*/747/") #Retorna: AbBa

Share this post


Link to post
Share on other sites

Opa, bom código, mas eu sugiro dar uma aprimorada nele, ainda não sei muito de python para dar uma luz para onde seguir, mas o seu código é um tanto fácil de ser quebrado... Pois cada letra corresponde a "chave" criptografada, então b sempre será a */8423/, então fica fácil de decifrar a mensagem. Mas já é algo =]

 

Abraço

Share this post


Link to post
Share on other sites

É um simples código que fiz apenas para aprimorar conhecimento. Ele não tem fim comercial ou mesmo de uso pessoal.

 

Para quem quiser, é só criar 2 ou mais listas de criptografia com códigos diferentes e depois o Python escolher cada uma para cada letra.

Share this post


Link to post
Share on other sites

Legal seria, após a desencriptação, ele gerar várias mensagens falsas com contexto pra disfarçar a mensagem que se quer passar de fato. Desse jeito quem quebrasse o código iria conseguir nada.

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.