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

janusgraph - store a password encrypted using bcrypt

我正在使用带有 cassandra 的 janusgraph 作为存储后端。我正在使用名为 bcrypt 的节点包在保存密码之前对其进行加密。 janusgraph 中那个 属性 的数据类型是 String。这是生成的密码哈希字符串 - a$JSR6FClewTOHGxwpt/F0AePRzGnKvV2L9gj4TL1dA9fQERLWrig7u

这是我在尝试将其保存在数据库中时遇到的错误:

"message": "startup failed:\nScript88.groovy: 1: illegal string body character after dollar sign;\n   solution: either escape a literal dollar sign \"\\" or bracket the value expression \"\" @ line 1, column 228.\n   elf_reg_ind\",\"2\",\"self_reg_pw\",\"a$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')"
}

我自己不是 groovy 大师,但我意识到只有在使用双引号时才尝试进行此评估,因此我通过确保使用单引号设法解决了这个问题。 我正在使用 PHP,所以过程是首先 json_encode 然后将双引号交换为单引号,处理中间任何已经转义的引号(如果有的话)。