콤보

콤보

Bash에 이 작업을 수행하는 도구가 있나요?

답변1

콤보

예, 여러 가지가 있습니다. 콤보coreutils(debian에서는 기본적으로 설치됨) 둘 다 포함되어 있습니다.32 베이스그리고64비트 기반. 다음을 인코딩하거나 디코딩할 수 있습니다.

$ printf '%s' "abc" | base64
YWJj

$ printf '%s' "abc" | base64 | base64 -d
abc

echo를 사용하면 뒤에 개행 문자가 추가되어 결과적으로 Base64로 인코딩된 문자열이 변경될 수 있다는 점을 이해하세요.

$ echo "abc" | base64
YWJjCg==

패키지 basezopenssl. 후자는 일반적으로 기본적으로 설치되지만 전자는 그렇지 않습니다.

$ printf '%s' "abc" | openssl base64
YWJj

코딩

소스 문자열은 base64 인코딩에 관계없이 모든 로케일(코드 페이지)로 인코딩됩니다. Base64 프로그램은 문자가 아닌 바이트를 인코딩합니다.

$ printf '%s' "éäìǫ" | base64 | base64 -d
éäìǫ

모든 시스템에서 정확히 동일하게 작동합니다. 글쎄요, 정상적인 시스템에서는 이 내용이 명령줄에도 인쇄 echo "éäìǫ"됩니다 .éäìǫ

물론 소스 문자열이 한 시스템에서 인코딩된 다음 다른 로케일을 사용하는 시스템에서 디코딩되면 다음과 같은 결과가 나올 가능성이 높습니다.모지박끈. 이는 base64로 해결되는 문제가 아니라 문자열 인코딩을 변경하여 해결되는 문제입니다. 함께 있을 수도 있음iconv.

$ echo -n "Москва" | base64            # in a utf8 locale
0JzQvtGB0LrQstCw

그러나 iso889-5를 사용하는 키릴어 로케일에서는(아마도 ru_RU.ISO-8859-5이지만 키릴어를 사용하는 다른 언어도 가능):

$ echo "0JzQvtGB0LrQstCw" | base64 -d
ааОбаКаВаА

$ echo "0JzQvtGB0LrQstCw" | base64 -d | iconv -f utf8 -t iso8859-5
Москва

관련 정보