>

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

자바 스크립트 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로 자바 스크립트로 결과를 생성하려면 어떻게해야합니까?

  • 답변 # 1

    echo  "helpfully"은 출력에 줄 바꿈을 추가하므로 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=

  • 이전 shell - PID에서 gedit 프로세스를 죽일 수 없습니다
  • 다음 XML 태그에서 bash 변수 설정