bash의 Javascript BTOA와 base64?

bash의 Javascript BTOA와 base64?

API로 보내기 전에 사용자 이름과 비밀번호 조합을 Base64로 변환해야 합니다.

javascript BTOA 기능은 저에게 효과적이지만 bash에서 base64 명령을 사용하려고 하면 약간 다른 결과가 나타납니다.

자바스크립트:

btoa("hello");                   # aGVsbG8=
btoa("username:password");       # dXNlcm5hbWU6cGFzc3dvcmQ=
btoa("testing");                 # dGVzdGluZw==

큰 타격:

echo hello | base64              # aGVsbG8K
echo username:password | base64  # dXNlcm5hbWU6cGFzc3dvcmQK
echo testing | base64            # dGVzdGluZwo=

결과는 항상 비슷하지만 다릅니다.

서버에는 JS 스타일 코딩이 필요하지만 bash를 사용해야 합니다.

결과는 다르지만 비슷한 이유는 무엇입니까? bash를 사용하여 javascript에서 결과를 생성하는 방법은 무엇입니까?

답변1

echo"helpively"는 출력에 개행 문자를 추가합니다.기준), Base64도 충실하게 인코딩합니다.

echo개행을 추가하지 말라고 지시하세요 :

$ echo hello | od -c
0000000   h   e   l   l   o  \n
0000006
$ echo -n hello | od -c
0000000   h   e   l   l   o
0000005

또는 더 나은 방법은 다음을 사용하는 것입니다 printf.

$ printf '%s' hello | od -c
0000000   h   e   l   l   o
0000005
$ printf '%s' hello | base64
aGVsbG8=
$ echo -n hello | base64
aGVsbG8=

관련 정보