シェルスクリプト - コードのアルファベット

シェルスクリプト - コードのアルファベット

各文字と文字が特定の値を持つアルファベットを作成したいと思います。

例:

A="99_banana"
a="@_melon"
B="22_GRAPE"
b="orange"
C="Strawberry"
c="life"
@="12399"
!="tv_12"

その他など

スクリプトを実行するとき:

文章エンコーディング:

$ ./Encryptfruits -c "Abc!"
output: 99_bananaorangelifetv_12

文章を解読します:

$ ./Encryptfruits -d "99_bananaorangelifetv_12"
output: Abc!

誰でも例がありますか? Googleで検索しましたが、結果はありません。

-c パラメータ暗号化

-d パラメータの復号化

ベストアンサー1

これはbashでは簡単ではありませんが、連想配列を使用することで可能です。

#! /bin/bash
declare -A crypt=(
    [A]="99_banana"
    [a]="@_melon"
    [B]="22_GRAPE"
    [b]="orange"
    [C]="Strawberry"
    [c]="life"
    ['@']="12399"
    ['!']="tv_12"
)

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'
}

encrypted=$(encode 'Abc!')

decode "$encrypted"

ある文字の暗号化が別の文字暗号化のサブストリングである場合、この操作は中断される可能性があります。

おすすめ記事