janusgraph - 存储使用bcrypt加密的密码
问题描述:
我使用janusgraph和cassandra作为存储后端。在保存密码之前,我使用名为bcrypt的节点程序包来加密密码。 janusgraph中该属性的数据类型是String。这是得到了生成的密码哈希字符串 - $2a$10$JSR6FClewTOHGxwpt/F0AePRzGnKvV2L9gj4TL1dA9fQERLWrig7u
janusgraph - 存储使用bcrypt加密的密码
这是在试图将其保存在数据库中,我得到的错误:
"message": "startup failed:\nScript88.groovy: 1: illegal string body character after dollar sign;\n solution: either escape a literal dollar sign \"\\$5\" or bracket the value expression \"${5}\" @ line 1, column 228.\n elf_reg_ind\",\"2\",\"self_reg_pw\",\"$2a$10$J\n ^\n\n1 error\n",
"Exception-Class": "org.codehaus.groovy.control.MultipleCompilationErrorsException"
请让我知道如果你需要任何其他信息。
答
您传递给服务器的查询会使用Groovy进行编译,而Groovy正试图将$
作为标识符进行解析。你的散列中有一个字面$
,所以你需要在每个$
前面加上一个\
来逃避它。例如:
{ "gremlin":
"g.V(1234).property('hash', '\$2a\$10\$JSR6FClewTOHGxwpt/F0AePRzGnKvV2L9gj4TL1dA9fQERLWrig7u')"
}
答
不是常规大师自己,但我意识到这一点的评价使用双引号时才尝试,所以我设法确保我使用单引号来解决这个问题。 我正在使用PHP,所以这个过程是首先json_encode然后交换双引号单引号照顾中间任何已经转义的引号(如果有的话)。