lubuntu 15.04でJavaベースのneo4jグラフデータベースを使用しています。
neo4j HTTP認証ヘッダーは、 'username:password'(引用符を含まない)のbase64エンコードを使用します。wiresharkを使用すると、neo4jによって生成されたbase64コードを見ることができます。
ただし、ubuntu coreutils base64を使用して同じ文字列をエンコードすると、エンコードが若干異なります。このエンコードは、neo4jでは受け入れられません。
両方のエンコーディングは、正しいユーザー名:パスワード文字列にデコードします
例
ユーザー名= neo4j
およびパスワード=@N
Neo4jは、符号化された値を与えるneo4j:@N
ようbmVvNGo6QE4=
にデコードしたneo4j:@N
予想通り
$ echo 'bmVvNGo6QE4=' | base64 --decode
neo4j:@N
Ubuntu coreutils base64
は、エンコードされた値neo4j:@N
as bmVvNGo6QE4K
(最後の文字が異なります)を返しますが、正しくデコードします。
$ echo 'neo4j:@N' | base64
bmVvNGo6QE4K
$ echo 'bmVvNGo6QE4K' | base64 --decode
neo4j:@N
どうしてこれなの?一貫したエンコードを取得するには何が必要ですか?
=
通常のBase64ではパディングが行われることに注意してください(最後にのみ有効です)。1つのエンコードされた文字列にパディングがあり、他の文字列にはパディングがない(または、より一般的には、2つの文字列のパディング量が異なる)という事実は、2つの文字列の長さが異なるため、同一ではない可能性があるという事実です。