PCF-3

Questões comentadas, artigos e notícias

Posts Tagged ‘cifra cesar’

Resposta do Desafio I: Criptografia Básica

Posted by papacharliefox3 em 23/03/2009

Olá amigos!

Em um post passado, lançamos um desafio de criptografia, agora vamos mostrar a resolução. O desafio pode ser acessado aqui. A resposta para o desafio pode ser resolvida com o script que escrevi, conforme abaixo:

$ ./caesar.sh ‘TXH WDO FRQWULEXLU FRP R EORJ :)’ -3
QUE TAL CONTRIBUIR COM O BLOG :)
$ ./caesar.sh ‘DQS OD YDPRV QRV’ -3
ANP LA VAMOS NOS

A chave para a cifra é 3, ao utilizar no script com o sinal de “-“, realiza-se a operação contrária (decifração, descriptografia). Segue script (bash) que escrevi baseado no algoritmo da Cifra de César:

#!/bin/sh
#
# Caesar Cipher in Bash
#
# Use key = 13 for ROT-13 cipher
# key can be a negative number (decrypt)
#
# Author: alexandre.abreu@gmail.com
# Date: 20/03/09
#
# http://en.wikipedia.org/wiki/Caesar_cipher

[ -n "$1" ] || {
   echo "Usage: $0 \"Message\" [key=3]"
   exit 1
}

KEY=${2:-3}

# more sanitization
KEY=$(expr $KEY \% 26 2>/dev/null) || {
   echo "Key must be an integer between 1 and 25"
   exit 1
}

IFS="
"
for char in `echo -n "$1" | tr '[a-z]' '[A-Z]' | grep -o "."`; do
   dec=$(printf "%d" \'${char})
   ( [ $dec -lt 65 ] || [ $dec -gt 90 ] ) && {
      echo -n $char
      continue
   }
   dec=$[dec+KEY]
   [ $dec -gt 90 ] && dec=$[(64+dec)%90]
   char=$(printf "%02X" $dec)
   printf "\x${char}"
done

echo

exit 0

Inclusive, publiquei-o no registro do Wikipedia para que outras pessoas (estudantes, principalmente) possam utilizá-lo.

Parabéns ao ‘foxtrote’ pela resposta mais rápida! :) Até o próximo desafio!

Abraços

Anúncios

Posted in Criptografia | Etiquetado: | 4 Comments »