Lubuntu 15.04 java tabanlı neo4j grafik veritabanı kullanıyorum.
Neo4j HTTP kimlik doğrulama başlığı 'username: password' (tırnak işaretleri hariç) base64 kodlamasını kullanır. Wireshark kullanarak neo4j tarafından üretilen base64 kodunu görebilirsiniz.
Ancak aynı dizeyi kodlamak için ubuntu coreutils base64 kullanırsam biraz farklı bir kodlama alırım. Bu kodlama neo4j tarafından kabul edilmez.
Her iki kodlama da doğru kullanıcı adına kod çözülür: şifre dizesi
Misal
kullanıcı adı = neo4j
ve şifre =@N
Neo4j ait kodlanmış değerini verir neo4j:@N
olarak bmVvNGo6QE4=
çözdüğü neo4j:@N
beklendiği gibi
$ echo 'bmVvNGo6QE4=' | base64 --decode
neo4j:@N
Ubuntu coreutils base64
kodlanmış değerini (son karakterde farklılık gösterir) neo4j:@N
olarak döndürür, bmVvNGo6QE4K
ancak yine de kodunun doğru şekilde çözülmesini sağlar;
$ echo 'neo4j:@N' | base64
bmVvNGo6QE4K
$ echo 'bmVvNGo6QE4K' | base64 --decode
neo4j:@N
Bu neden? Tutarlı kodlama elde etmek için neye ihtiyacım var?
=
Normal Base64 bulunan dolgu (sonunda ve geçerlidir). Kodlanmış bir ipin dolguya sahip olması ve diğerinin (veya daha genel olarak, iki ipin farklı miktarlarda dolguya sahip olması), ikisinin farklı uzunlukta olduğu ve bu nedenle muhtemelen aynı olamayacağı ölü bir hediyedir .