쉘 스크립팅 - 코드의 알파벳

쉘 스크립팅 - 코드의 알파벳

각 문자와 문자가 특정 값을 갖는 알파벳을 만들고 싶습니다.

예:

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"

한 문자의 암호화가 다른 문자 암호화의 하위 문자열인 경우 이 작업이 중단될 수 있습니다.

답변2

 #! /bin/bash
 declare -A crypt=(
     [A]="99_banana"
     [a]="@_melon"
     [B]="22_GRAPE"
     [b]="orange"
     [C]="Strawberry"
     [c]="life"
     [' ']="space"
     ['@']="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'
 }

 encrypt=$(encode 'Abc !')

 decrypt=$(decode "$encrypt")

 echo "$encrypt"

 echo "$decrypt"

이해하기 쉽도록 변수를 추가했습니다.

관련 정보