Prezados(as),

Como exercício da disciplina de segurança da informação da faculdade,
desenvolvi um script que cifra um texto vindo da entrada padrão com a
cifra de César (substitui uma letra por outra, situada um número fixo
de vezes à frente no alfabeto usado).

Por exemplo: o texto ABC cifrado com chave 1 vira BCD, com chave 2
vira CDE e assim por diante.

Minha abordagem foi usar o comando y// do sed para fazer a
substituição das letras. Para isso, gero uma variável com o alfabeto
normal (ALFABETO1) e outra com o alfabeto "shiftado" (ALFABETO2) e
faço y/$ALFABETO1/$ALFABETO2/.

Por exemplo: para a chave 2 tem-se
y/abcdefghijklmnopqrstuvwxyz/cdefghijklmnopqrstuvwxyzab/

Gostaria de ouvir sugestões de melhorias para o meu script ou
sugestões de outras abordagens para resolver o problema. O script já
faz o que deveria fazer, apenas quero trocar idéias com o objetivo de
aprendizado.

Segue código abaixo:

#!/bin/bash

CHAVE=$1
PROIBIDOS="ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÉÊÍÓÔÕÚÇàáâãéêíóôõúç"
PERMITIDOS="abcdefghijklmnopqrstuvwxyzaaaaeeioooucaaaaeeiooouc"
CONTADOR=0
ALFABETO1=({a..z})
ALFABETO2=$(while [ $CONTADOR -le 25 ]; do
                           echo -n ${ALFABETO1[(CONTADOR+CHAVE)%26]}
                           let CONTADOR++
                       done)

ALFABETO1=$(echo [EMAIL PROTECTED] | tr -d ' ')

sed "y/$PROIBIDOS/$PERMITIDOS/; y/$ALFABETO1/$ALFABETO2/"

------------

Fiz uma substituição antes da cifragem propriamente dita para não
precisar me preocupar com letras maiúsculas e acentuadas.

Saudações
-- 
Guilherme Magalhães Gall

Responder a