How to store value of a variable in a Bash Script function

2

I'm creating a factory to easily encrypt a file in this case in txt or decrypt. The problem in this program is the value of the CIFRA_HEX and CIFRA variable that I can not pass the stored value to the following function (decifra_RC4 ()) because the file can not be decrypted. How can I resolve this situation so that I can get the value of the keys in the function? The implemented code is in Bash Script

    menu(){
case $opcao_menu in
1)echo "REVERSE CRYPTO 4" ;;
esac

echo "1 -> Cifrar"
echo "2 -> Decifrar"
echo "3 -> Voltar ao menu anterior"
echo "Escolha uma das seguintes opções:"

read opcao

case $opcao in
0);;    
1) cifrar_RC4 ;;
2) decifrar_RC4;;
esac
}


cifrar_RC4() {
nome="RC4"

echo -n "Introduza a chave de cifra que pertende criar:"; read CIFRA
CIFRA_HEX= openssl rand -hex 8 

if [[ -z "$CIFRA" ]]; then
echo $CIFRA_HEX
fi

echo -n "introduza o nome do ficheiro para cifrar:"; read ENTRADA_FICHEIRO 
echo -n "Introduza o nome para o ficheiro de saida cifrado:"; read SAIDA_FICHEIRO
echo -n "Deseja remover o ficheiro original?"

if [[ -z "$ENTRADA_FICHEIRO" ]]; then
echo "O ficheiro foi encriptado"    
fi

case $opcao_menu in
1) algoritmo_cifraRC4 ;;
2) algoritmo_cifraAES128 ;;
3) algoritmo_cifraAES256 ;;
esac

#read opcao

valor_chave=$CIFRA_HEX
echo "A cifra utilizada foi: " $nome

if [[ -z "$CIFRA" ]]; then

echo "A chave gerada foi: " $valor_chave
else
echo "A chave criada foi: " $CIFRA
fi

echo "O ficheiro criado foi:" $SAIDA_FICHEIRO



}

decifrar_RC4() {

echo -n "introduza o nome do ficheiro para decifrar:"; read SAIDA_FICHEIRO
echo -n "Introduza o nome para o ficheiro de saida:"; read ENTRADA_FICHEIRO

case $opcao_menu in
1) algoritmo_decifraRC4 ;;
2) algoritmo_decifraAES128 ;;
3) algoritmo_decifraAES256 ;;
esac

if [[ -z "$CIFRA" ]]; then
echo "A chave usada foi: " $CIFRA_HEX
else
echo "A chave usada foi: " $CIFRA
fi
echo "O ficheiro de saida foi: " $ENTRADA_FICHEIRO


}


algoritmo_cifraRC4(){
if [[ -z "$CIFRA" ]]; then
openssl enc -rc4 -e -K "$CIFRA_HEX" -in "$ENTRADA_FICHEIRO.txt" -out "$SAIDA_FICHEIRO.rc4"
else
openssl enc -rc4 -e -K "$CIFRA" -in "$ENTRADA_FICHEIRO.txt" -out "$SAIDA_FICHEIRO.rc4"
fi
}

algoritmo_decifraRC4(){ 
echo $valor_chave
if [[ -z "$CIFRA" ]]; then
openssl enc -rc4 -d -K "$CIFRA_HEX" -in "$SAIDA_FICHEIRO.rc4" -out "$ENTRADA_FICHEIRO.txt"
else
openssl enc -rc4 -d -K "$CIFRA" -in "$SAIDA_FICHEIRO.rc4" -out "$ENTRADA_FICHEIRO.txt"
fi
}
menu
    
asked by anonymous 13.10.2018 / 14:07

1 answer

0

Only error I saw in your code was CIFRA_HEX= openssl rand -hex 8 if you want to put the result of the command inside the variable should do asim

  

CIFRA_HEX = $ (openssl rand-hex 8)

see the result:

  

echo $ CIFRA_HEX

     

2e7918cf12d2f50e

or so

  

CIFRA_HEX = 'openssl rand-hex 8'

     

echo $ CIFRA_HEX

     

2e7918cf12d2f50e

If you want content as a string, you must enclose it in single quotation marks

  

CIFRA_HEX = 'openssl rand-hex 8'

     

echo $ CIFRA_HEX

     

openssl rand-hex 8

    
23.10.2018 / 21:31