web-dev-qa-db-ja.com

UNIXコマンドを使用して、Base64とBase64URLのデータをエンコードおよびデコードする方法

Base64エンコードはによって達成することができます

$ echo Some_data_to_be_converted | base64

U29tZV9kYXRhX3RvX2JlIF9jb252ZXJ0ZWQK
 _

そしてBase64デコードはによって達成することができる

$ echo U29tZV9kYXRhX3RvX2JlIF9jb252ZXJ0ZWQK | base64 -d

Some_data_to_be_converted
 _
  1. Base64URLエンコード/デコードを実現する方法

  2. "+"を "+"と "/"で置き換えるのにちょうど十分ですか?

  3. PADDING "#"をするとき(考慮される "#"を追加/削除します)。

5
MALATESH K

既にaを持っている場合は、encoded文字列を「+」と「_」を「_」に置き換える必要がある場合は「_」を取得する必要がありますBase64URLエンコード文字列。これを実現するには、次のコマンドを使用できます。

echo Some_data_to_be_converted | base64 | sed 's/+/-/g; s/\//_/g';

(あなたはやり直すことができます Bash Shell Onlineを実行

Base64エンコーディング入力バイト(8ビット)を6ビット表現にマッピングします。 4 Base64文字は4 * 6 = 24ビットを符号化することができ、これは3バイトに等しい。入力内のバイト数を3で割ることができないときはいつでも、標準に従ってパディングが必要です。

パディング文字は=です

=Characterがurlsのキー値のペアに使用されるので、URLでエンコードされた値を使用する予定の場合は、それを直接パディングに使用することはできません。ほとんどの実装がまだ機能し、最後に2つか4つの未使用のビットを無視するだけなので、パディングをounmitしかounmitします。あるいは、受信機が本当にパディングが必要な場合は、=をそのURL Safe表現%3dに置き換える必要があります。

2
jps