Loz*_*own 13 command-line password neo4j
我在 lubuntu 15.04 上使用基于 java 的 neo4j 图形数据库。
neo4j HTTP 身份验证标头使用 base64 编码的 'username:password'(不包括引号)。使用wireshark我可以看到neo4j生成的base64代码。
但是,如果我使用 ubuntu coreutils base64 对相同的字符串进行编码,则会得到稍微不同的编码。这种编码不被neo4j 接受。
两种编码都解码为正确的用户名:密码字符串
例子
用户名=neo4j和密码=@N
Neo4j 给出neo4j:@Nas的编码值,按预期bmVvNGo6QE4=解码neo4j:@N
$ echo 'bmVvNGo6QE4=' | base64 --decode
neo4j:@N
Run Code Online (Sandbox Code Playgroud)
Ubuntu coreutilsbase64返回neo4j:@Nas的编码值bmVvNGo6QE4K(与最后一个字符不同)但仍能正确解码;
$ echo 'neo4j:@N' | base64
bmVvNGo6QE4K
$ echo 'bmVvNGo6QE4K' | base64 --decode
neo4j:@N
Run Code Online (Sandbox Code Playgroud)
为什么是这样?我需要做什么才能获得一致的编码?
mur*_*uru 58
您正在编码(稍微)不同的字符串:
$ echo 'bmVvNGo6QE4=' | base64 --decode | od -c
0000000 n e o 4 j : @ N
0000010
$ echo 'neo4j:@N' | od -c
0000000 n e o 4 j : @ N \n
0000011
Run Code Online (Sandbox Code Playgroud)
echo添加尾随换行符。这导致不同的编码。
printf改为使用,其输出规范更精确:
$ printf '%s' 'neo4j:@N' | base64
bmVvNGo6QE4=
Run Code Online (Sandbox Code Playgroud)