[PITCH] CryptoHarmony: Criptografia baseada nas escalas musicais
Olá pessoal, recentemente venho estudado python para cyber e crypto, e uma das ideias que tive para aprimorar minhas habilidades foi criar uma criptografia que se baseia nas escalas musicais como:
Escalas
escalas_expandidas = {
"C": [
"C", "C#", "D", "D#", "E", "F", "F#",
"G", "G#", "A", "A#", "B", "C2", "C#2",
"D2", "D#2", "E2", "F2", "F#2", "G2",
"G#2", "A2", "A#2", "B2", "C3", "C#3"
],
"D": [
"D", "D#", "E", "F", "F#", "G", "G#",
"A", "A#", "B", "C", "C#", "D2", "D#2",
"E2", "F2", "F#2", "G2", "G#2", "A2",
"A#2", "B2", "C2", "C#2", "D3", "D#3"
],
"E": [
"E", "F", "F#", "G", "G#", "A", "A#",
"B", "C", "C#", "D", "D#", "E2", "F2",
"F#2", "G2", "G#2", "A2", "A#2", "B2",
"C2", "C#2", "D2", "D#2", "E3", "F3"
],
"F": [
"F", "F#", "G", "G#", "A", "A#", "B",
"C", "C#", "D", "D#", "E", "F2", "F#2",
"G2", "G#2", "A2", "A#2", "B2", "C2",
"C#2", "D2", "D#2", "E2", "F3", "F#3"
],
"G": [
"G", "G#", "A", "A#", "B", "C", "C#",
"D", "D#", "E", "F", "F#", "G2", "G#2",
"A2", "A#2", "B2", "C2", "C#2", "D2",
"D#2", "E2", "F2", "F#2", "G3", "G#3"
],
"A": [
"A", "A#", "B", "C", "C#", "D", "D#",
"E", "F", "F#", "G", "G#", "A2", "A#2",
"B2", "C2", "C#2", "D2", "D#2", "E2",
"F2", "F#2", "G2", "G#2", "A3", "A#3"
],
"B": [
"B", "C", "C#", "D", "D#", "E", "F",
"F#", "G", "G#", "A", "A#", "B2", "C2",
"C#2", "D2", "D#2", "E2", "F2", "F#2",
"G2", "G#2", "A2", "A#2", "B3", "C3"
]
}
Função que gera uma lista de escalas para cada caractere do texto, repetindo a senha tonal
def gerar_chaves_tonal(texto, senha):
## Para cada caractere do texto, associa uma letra da senha (maiuscula)
return [senha[i % len(senha)].upper() for i in range(len(texto))]
Função que criptografa o texto usando a senha tonal
def criptografar(texto, senha_tonal):
texto = texto.lower() # Converte texto para minúsculas para padronizar
chaves_tonal = gerar_chaves_tonal(texto, senha_tonal) # Gera as escalas para cada caractere
resultado = []
Para cada letra do texto junto com sua escala correspondente...
for letra, escala_nome in zip(texto, chaves_tonal):
if letra in alfabeto: # Se for uma letra do alfabeto
escala = escalas_expandidas[escala_nome] ## Pega a escala referente à letra da senha
indice_letra = alfabeto.index(letra) ## Pega o índice da letra no alfabeto (0-25)
nota = escala[indice_letra] ## Mapeia a letra para a nota correspondente na escala
resultado.append(nota) ## Adiciona a nota cifrada ao resultado
else:
## Se não for letra (espaço, pontuação), mantém como está no resultado
resultado.append(letra)
return resultado
Função que descriptografa a lista de notas usando a senha tonal
def descriptografar(notas, senha_tonal):
resultado = []
# Cria lista só com as notas musicais para gerar as escalas corretas
notas_musicais = [n for n in notas if n in sum(escalas_expandidas.values(), [])]
chaves_tonal = gerar_chaves_tonal(notas_musicais, senha_tonal)
idx = 0 ## Índice para iterar nas chaves tonais só das notas
for nota in notas:
if nota in sum(escalas_expandidas.values(), []): # Se for nota musical
escala_nome = chaves_tonal[idx] # Escala da nota atual
escala = escalas_expandidas[escala_nome]
indice_nota = escala.index(nota) # Índice da nota na escala
letra = alfabeto[indice_nota] # Mapeia a nota para letra do alfabeto
resultado.append(letra) # Adiciona letra decifrada ao resultado
idx += 1
else:
## Se não for nota musical (espaço, pontuação), mantém no resultado
resultado.append(nota)
return "".join(resultado) # Junta tudo numa string
Teste interativo
texto_original = input("Texto para criptografar: ")
senha = input("Senha tonal (ex: CDFG): ")
criptografado = criptografar(texto_original, senha)
print("\n Texto criptografado em notas:", " ".join(criptografado))
decifrado = descriptografar(criptografado, senha)
print("\n Texto descriptografado:", decifrado)
Este foi um projetinho básico feito em uma noite, não é uma criptografia avançada mas me ajudou a melhorar, se alguem tiver alguma dica de como melhora-la, ficarei grato! Obrigado pro ler até aqui E pra caso não nos vermos mais Bom dia, Boa tarde e boa noite.
Show de bola!!
Pouca gente sabe mas o principal conceito de segurança em transmissões de rádio, foi diretamente inspirado na música... Senta que lá vem historia...
Em 1942, quando o mundo estava em guerra, uma improvável dupla registrou uma patente que mudaria para sempre a telecomunicação. De um lado, Hedy Lamarr, atriz austríaca conhecida como "a mulher mais bela do mundo" em Hollywood. Do outro, George Antheil, compositor vanguardista americano famoso por suas composições experimentais com pianos mecânicos.
A genialidade da dupla estava na aplicação da teoria musical à tecnologia militar. Preocupados com os torpedos aliados sendo interceptados pelos alemães, Lamarr e Antheil desenvolveram o conceito do "salto de frequência" - uma técnica onde transmissor e receptor pulam sincronizadamente entre diferentes frequências de rádio, tornando praticamente impossível interceptar ou bloquear o sinal.
A inspiração veio diretamente da música: eles usaram rolos de pianola para controlar as mudanças de frequência, utilizando exatamente 88 frequências - uma para cada tecla de um piano, os equipamentos simplemente precisavam seguir a mesma partitura para se escutarem.
Embora a tecnologia não tenha sido usada durante a Segunda Guerra Mundial, o conceito de salto de frequência tornou-se fundamental para as comunicações modernas. Hoje, essa invenção é a base de redes cellular, Wi-Fi, Bluetooth e quase todo o resto.
A história prova que a inovação pode vir dos lugares mais inesperados - e que a arte e a ciência, quando se encontram, mudam o mundo.
Meus 2 cents:
Com a tua publicacao me lembrei de algo que tinha lido faz um tempo: a geracao de numeros aleatorios baseado em captura de sons.
https://rmsrosa.github.io/notas_sde/pages/c03/gerando_num_aleatorios/
https://lume.ufrgs.br/bitstream/handle/10183/251751/001153657.pdf