#!/bin/bash
# ./alterotx.sh
# Israel Torres 20120305
# alternate rotations
# ./alterotx.sh '23' 'ISRAELTORRES'
# ROLLX: 23
# CRYPU: LPUXHIWLUOHP
# PLAIN: ISRAELTORRES
# CRYPD: FVODBOQROUBV
#
# for i in {0..26}; do ./alterotx.sh $i 'ISRAELTORRES'; done
#
# Mac OS X 10.7.3 11D50b
# Darwin Kernel Version 11.3.0
# GNU bash, version 3.2.48(1)-release
#
# todo: add variables for inc/dec funcs
function wrap_ascii (){
MYASC=$1;ASCII_LOWER=65;ASCII_UPPER=90
if [ "$1" -lt "$ASCII_LOWER" ]; then
MYASC=$((ASCII_LOWER%$1))
MYASC=$(($ASCII_UPPER-$MYASC+1))
fi
if [ "$1" -gt "$ASCII_UPPER" ]; then
MYASC=$(($1%$ASCII_UPPER))
MYASC=$(($ASCII_LOWER+$MYASC-1))
fi
echo $MYASC
}
function upme () {
MYASC=$(printf '%d' "'${PLAIN:$i:1}'")
MYCHR=$((MYASC+$ROLLX))
MYNEW=$(wrap_ascii "$MYCHR")
MYOUT=$(printf \\$(printf '%03o' $MYNEW))
echo -n $MYOUT
}
function dnme () {
MYASC=$(printf '%d' "'${PLAIN:$i:1}'")
MYCHR=$((MYASC-$ROLLX))
MYNEW=$(wrap_ascii "$MYCHR")
MYOUT=$(printf \\$(printf '%03o' $MYNEW))
echo -n $MYOUT
}
function roll_dn () {
for (( i=0; i<$LEN_PLAIN; i++ )); do
MYMOD=$(($i%2))
if [ "$MYMOD" == 0 ]; then
upme
fi
if [ "$MYMOD" == 1 ]; then
dnme
fi
done
}
function roll_up () {
for (( i=0; i<$LEN_PLAIN; i++ )); do
MYMOD=$(($i%2))
if [ "$MYMOD" == 0 ]; then
dnme
fi
if [ "$MYMOD" == 1 ]; then
upme
fi
done
}
# main()
if [ ! $# -lt 2 ]; then
PLAIN=$2; LEN_PLAIN=${#PLAIN}
ROLLX=$1
CRYPU=$(roll_up);CRYPD=$(roll_dn)
echo -e "ROLLX:\t$ROLLX"
echo -e "CRYPU:\t$CRYPU"
echo -e "PLAIN:\t$PLAIN"
echo -e "CRYPD:\t$CRYPD"
else
echo "usage: $0 '#''STRING'"
echo "example: $0 '1' 'ISRAELTORRES'"
fi
#eof
Comments
0 B
|👍
/👎