shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Cifra de César


From: Guilherme Gall
Subject: Cifra de César
Date: Sun, 24 Aug 2008 00:34:03 -0300

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 ${ALFABETO1[@]} | 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


reply via email to

[Prev in Thread] Current Thread [Next in Thread]