janusgraph - 存储使用bcrypt加密的密码

问题描述:

我使用janusgraph和cassandra作为存储后端。在保存密码之前,我使用名为bcrypt的节点程序包来加密密码。 janusgraph中该属性的数据类型是String。这是得到了生成的密码哈希字符串 - $2a$10$JSR6FClewTOHGxwpt/F0AePRzGnKvV2L9gj4TL1dA9fQERLWrig7ujanusgraph - 存储使用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然后交换双引号单引号照顾中间任何已经转义的引号(如果有的话)。