0

我需要探测给定的字符串是否与 scrypt 密钥匹配。

一些需要匹配的例子:

$s0$e0801$epIxT/h6HbbwHaehFnh/bw==$7H0vsXlY8UxxyW/BWx/9GuY7jEvGjT71GFd6O4SZND0=
$s0$100808$6McCjsQBpcCShLWq4nl3gg==$gs+Tz5DLGCDtYHGpIkP4i3EDpufBzsEGvoXzegkO5cU=

我使用 JavaString.matches函数。

Keys 的描述如下: 基本形式: $s0$params$salt$key 值代表:

  • s0 - 具有 128 位盐和 256 位派生密钥的格式版本 0
  • params - 32 位十六进制整数,包含 log2(N)(16 位)、r(8 位)和 p(8 位)
  • salt - base64 编码的盐
  • key - base64 编码的派生密钥
4

1 回答 1

2

这是我能想到的最好的。非常感谢任何更好的答案。

Java:
String match = "^\\$s0\\$[0-9a-f]{5,6}\\$[a-zA-Z0-9/+]+[=]*\\$[a-zA-Z0-9/+]+[=]*$"

General:
^\$s0\$[0-9a-f]{5,6}\$[a-zA-Z0-9/+]+[=]*\$[a-zA-Z0-9/+]+[=]*$
于 2013-10-10T10:08:20.577 回答