Array alfabeto trocar letra a cada 8 caracteres

1. Array alfabeto trocar letra a cada 8 caracteres

Alex Machado Fontinelli
Pinguino

(usa Debian)

Enviado em 11/12/2019 - 09:53h

Bom dia, espero que alguem possa me ajudar hehe

#! /bin/bash
declare -A crypt=(
[A]="@_banana"
[a]="99_melon"
[B]="AZ_GRAPE"
[b]="!!_stars"
[C]="81_xxxxx"
[c]="computer"
[' ']="111_space"
['!']="life_9900"
)

encode () {
local word=$1
for ((i=0; i<${#word}; ++i)) ; do
local char=${word:$i:1}
printf %s' ' ${crypt[$char]}
done
printf '\n'
}

declare -A decrypt
for char in "${!crypt[@]}" ; do
key=${crypt[$char]}
decrypt[$key]=$char
done

decode () {
local word=$1
while [[ $word ]] ; do
local code
for code in "${!decrypt[@]}"; do
if [[ $word == "$code"* ]] ; then
printf %s "${decrypt[$code]}"
word=${word#"$code"}
fi
done
done
printf '\n'
}

encode 'Abc!'


Output: @_banana !!_stars computer life_9900 


estou com o seguinte problema, como faço para o array fazer o processo inverso?
ex:

decode '@_banana !!_stars computer life_9900' 


Output: Abc! 


cada array do alfabeto tem 8 caracteres porem, não sei como fazer para no decode ele identificar @_banana = A
sei que tenho usar o if == porem não estou conseguindo, eu teria que criar um alfabeto inverso talvez
alguem pode dar uma força?


  


2. Re: Array alfabeto trocar letra a cada 8 caracteres

Alex Machado Fontinelli
Pinguino

(usa Debian)

Enviado em 11/12/2019 - 17:16h

não entendo exatamente como esse codigo funciona estudo shell script faz pouco tempo
se alguém souber de alguma solução fico muito grato


3. Re: Array alfabeto trocar letra a cada 8 caracteres

augusto
marimbondo

(usa Outra)

Enviado em 12/12/2019 - 01:01h

É, parece que você está em todos os lugares com essa pergunta.. E parece que lá você tem várias resp.
https://unix.stackexchange.com/questions/556603/shell-script-alphabet-in-code
Eu também notei que os caras deram nota -4 para a pergunta. Uma das respostas diz que esse exemplo _não_ funciona.

Olha isso aqui, é muito mais fácil, uma cifra de Caesar, mas ele usa caracteres e não palavras:
https://gist.github.com/IQAndreas/030b8e91a8d9a407caa6


4. resolvi +- hehe

Alex Machado Fontinelli
Pinguino

(usa Debian)

Enviado em 12/12/2019 - 13:21h

#!/usr/bin/env bash

declare -A encrypt=(
[A]="AAAAAAAA"
[B]="BBBBBBBB"
[' ']="-0-0-0-0"
['!']="!!!!!!!!"
)

declare -A decrypt=(
[AAAAAAAA]="A"
[BBBBBBBB]="B"
['-0-0-0-0']='-0-'
['!!!!!!!!']="!"
)

encode () {
local word=$1
for ((i=0; i<${#word}; ++i)) ; do
local char=${word:$i:1}
printf %s ${encrypt[$char]}
done
printf '\n'
}

decode () {
local word=$1
for ((i=0; i<${#word}; ++i)) ; do
local char=${word:$i:8}
printf %s ${decrypt[$char]}
done
printf '\n'
}

echo "encrypt"
encode 'AB !'

echo "decrypt"
decode 'AAAAAAAABBBBBBBB-0-0-0-0!!!!!!!!'

consegui resolver +- o problema, vou ter que sempre adaptar a cifra para 8 caracteres ou para o numero relacionado ao ${word:$i:8}







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts