From a3fa1e92a65dafc8640e36970e80895687934e30 Mon Sep 17 00:00:00 2001 From: "committer@tuxwarrior" Date: Wed, 20 May 2026 14:55:40 -0500 Subject: [PATCH] improved rotations, and adding drote (decode rote) thanks to ai --- dots/bash/.bashrc | 170 ++++++++++++++-------------------------------- 1 file changed, 50 insertions(+), 120 deletions(-) diff --git a/dots/bash/.bashrc b/dots/bash/.bashrc index d91dc45..7a8a2e8 100644 --- a/dots/bash/.bashrc +++ b/dots/bash/.bashrc @@ -245,111 +245,30 @@ function decimal_to_base36(){ done && echo } -rot() { - if [[ -n $1 ]] && [[ -n $2 ]] ; then - if [[ $1 == "1" ]] ; then - echo "$2" | tr 'a-z' 'b-za' - elif [[ $1 == "-1" ]] ; then - echo "$2" | tr 'b-za' 'a-z' - elif [[ $1 == "2" ]] ; then - echo "$2" | tr 'a-z' 'c-zab' - elif [[ $1 == "-2" ]] ; then - echo "$2" | tr 'c-zab' 'a-z' - elif [[ $1 == "3" ]] ; then - echo "$2" | tr 'a-z' 'd-zabc' - elif [[ $1 == "-3" ]] ; then - echo "$2" | tr 'd-zabc' 'a-z' - elif [[ $1 == "4" ]] ; then - echo "$2" | tr 'a-z' 'e-zabcd' - elif [[ $1 == "-4" ]] ; then - echo "$2" | tr 'e-zabcd' 'a-z' - elif [[ $1 == "5" ]] ; then - echo "$2" | tr 'a-z' 'f-zabcde' - elif [[ $1 == "-5" ]] ; then - echo "$2" | tr 'f-zabcde' 'a-z' - elif [[ $1 == "6" ]] ; then - echo "$2" | tr 'a-z' 'g-zabcdef' - elif [[ $1 == "-6" ]] ; then - echo "$2" | tr 'g-zabcdef' 'a-z' - elif [[ $1 == "7" ]] ; then - echo "$2" | tr 'a-z' 'h-zabcdefg' - elif [[ $1 == "-7" ]] ; then - echo "$2" | tr 'h-zabcdefg' 'a-z' - elif [[ $1 == "8" ]] ; then - echo "$2" | tr 'a-z' 'i-zabcdefgh' - elif [[ $1 == "-8" ]] ; then - echo "$2" | tr 'i-zabcdefgh' 'a-z' - elif [[ $1 == "9" ]] ; then - echo "$2" | tr 'a-z' 'j-zabcdefghi' - elif [[ $1 == "-9" ]] ; then - echo "$2" | tr 'j-zabcdefghi' 'a-z' - elif [[ $1 == "10" ]] ; then - echo "$2" | tr 'a-z' 'k-zabcdefghij' - elif [[ $1 == "-10" ]] ; then - echo "$2" | tr 'k-zabcdefghij' 'a-z' - elif [[ $1 == "11" ]] ; then - echo "$2" | tr 'a-z' 'l-zabcdefghijk' - elif [[ $1 == "-11" ]] ; then - echo "$2" | tr 'l-zabcdefghijk' 'a-z' - elif [[ $1 == "12" ]] ; then - echo "$2" | tr 'a-z' 'm-zabcdefghijkl' - elif [[ $1 == "-12" ]] ; then - echo "$2" | tr 'm-zabcdefghijkl' 'a-z' - elif [[ $1 == "13" ]] ; then - echo "$2" | tr 'a-z' 'n-zabcdefghijklm' - elif [[ $1 == "-13" ]] ; then - echo "$2" | tr 'n-zabcdefghijklm' 'a-z' - elif [[ $1 == "14" ]] ; then - echo "$2" | tr 'a-z' 'o-zabcdefghijklmn' - elif [[ $1 == "-14" ]] ; then - echo "$2" | tr 'o-zabcdefghijklmn' 'a-z' - elif [[ $1 == "15" ]] ; then - echo "$2" | tr 'a-z' 'p-zabcdefghijklmno' - elif [[ $1 == "-15" ]] ; then - echo "$2" | tr 'p-zabcdefghijklmno' 'a-z' - elif [[ $1 == "16" ]] ; then - echo "$2" | tr 'a-z' 'q-zabcdefghijklmnop' - elif [[ $1 == "-16" ]] ; then - echo "$2" | tr 'q-zabcdefghijklmnop' 'a-z' - elif [[ $1 == "17" ]] ; then - echo "$2" | tr 'a-z' 'r-zabcdefghijklmnopq' - elif [[ $1 == "-17" ]] ; then - echo "$2" | tr 'r-zabcdefghijklmnopq' 'a-z' - elif [[ $1 == "18" ]] ; then - echo "$2" | tr 'a-z' 's-zabcdefghijklmnopqr' - elif [[ $1 == "-18" ]] ; then - echo "$2" | tr 's-zabcdefghijklmnopqr' 'a-z' - elif [[ $1 == "19" ]] ; then - echo "$2" | tr 'a-z' 't-zabcdefghijklmnopqrs' - elif [[ $1 == "-19" ]] ; then - echo "$2" | tr 't-zabcdefghijklmnopqrs' 'a-z' - elif [[ $1 == "20" ]] ; then - echo "$2" | tr 'a-z' 'u-zabcdefghijklmnopqrst' - elif [[ $1 == "-20" ]] ; then - echo "$2" | tr 'u-zabcdefghijklmnopqrst' 'a-z' - elif [[ $1 == "21" ]] ; then - echo "$2" | tr 'a-z' 'v-zabcdefghijklmnopqrstu' - elif [[ $1 == "-21" ]] ; then - echo "$2" | tr 'v-zabcdefghijklmnopqrstu' 'a-z' - elif [[ $1 == "22" ]] ; then - echo "$2" | tr 'a-z' 'w-zabcdefghijklmnopqrstuv' - elif [[ $1 == "-22" ]] ; then - echo "$2" | tr 'w-zabcdefghijklmnopqrstuv' 'a-z' - elif [[ $1 == "23" ]] ; then - echo "$2" | tr 'a-z' 'x-zabcdefghijklmnopqrstuvw' - elif [[ $1 == "-23" ]] ; then - echo "$2" | tr 'x-zabcdefghijklmnopqrstuvw' 'a-z' - elif [[ $1 == "24" ]] ; then - echo "$2" | tr 'a-z' 'y-zabcdefghijklmnopqrstuvwx' - elif [[ $1 == "-24" ]] ; then - echo "$2" | tr 'y-zabcdefghijklmnopqrstuvwx' 'a-z' - elif [[ $1 == "25" ]] ; then - echo "$2" | tr 'a-z' 'z-zabcdefghijklmnopqrstuvwxy' - elif [[ $1 == "-25" ]] ; then - echo "$2" | tr 'z-zabcdefghijklmnopqrstuvwxy' 'a-z' - fi +# loops every 36, so that 36 becomes 1, etc +decimal_to_base36_wrap() { + local n=$(( $1 % 36 )) + decimal_to_base36 $n +} +rot() { + local shift=$1 + local text=$2 + local alpha=abcdefghijklmnopqrstuvwxyz + local n + + if [[ -z $shift || -z $text ]]; then + echo "Usage: rot " + return 1 fi + + # Normalize shift to 0-25 + n=$(( (shift % 26 + 26) % 26 )) + + # Generate rotated alphabet + local rotated="${alpha:n}${alpha:0:n}" + + echo "$text" | tr "a-z" "$rotated" } rotl() { @@ -376,42 +295,53 @@ rotl() { } rote() { - rote36 $1 -} - -rote10() { - if [[ -n $1 ]] ; then - - datestamp=$(date +%y%m%d)_ - rotl=$(rotl $1 0) - # ${param/pattern/replacement} - rotl="${rotl/./}" - emailaddress=$datestamp$rotl"@reduxmail.com" - echo $emailaddress - - fi + input="${1//./}" + rote36 "$input" } rote36() { if [[ -n $1 ]] ; then + # datestamp as base 36 datestamp=$(date +%y%m%d)_ - year=$(decimal_to_base36 $(date +%y)) + year=$(decimal_to_base36_wrap $(date +%y)) month=$(decimal_to_base36 $(date +%m)) day=$(decimal_to_base36 $(date +%d)) datestamp=${year}${month}${day}_ datestamp=`echo "${datestamp}" | tr '[A-Z]' '[a-z]'` + rotl=$(rotl $1 0) - # ${param/pattern/replacement} - rotl="${rotl/./}" emailaddress=$datestamp$rotl"@reduxmail.com" echo $emailaddress fi } +drote() { + local email="$1" + # Extract base36 date and encoded string + local base36date="${email%%_*}" + local rest="${email#*_}" + rest="${rest%@reduxmail.com}" + + # Decode base36 date + local year36="${base36date:0:1}" + local month36="${base36date:1:1}" + local day36="${base36date:2:1}" + + local year=$(echo "ibase=36; ${year36^^}" | bc) + local month=$(echo "ibase=36; ${month36^^}" | bc) + local day=$(echo "ibase=36; ${day36^^}" | bc) + + # Decode the rest using rotl with shift 0 (reverse of rotl 0 is itself) + # If you have a function to reverse the encoding, use it here. + # For now, let's assume rotl 0 is a simple rot13 (as in your example) + local decoded=$(echo "$rest" | tr 'a-z' 'n-za-m') + + printf "%02d%02d%02d: %s\n" "$year" "$month" "$day" "$decoded" +} # --- # searching