我需要探测给定的字符串是否与加密 key 匹配。
一些需要匹配的例子:
$s0$e0801$epIxT/h6HbbwHaehFnh/bw==$7H0vsXlY8UxxyW/BWx/9GuY7jEvGjT71GFd6O4SZND0=
$s0$100808$6McCjsQBpcCShLWq4nl3gg==$gs+Tz5DLGCDtYHGpIkP4i3EDpufBzsEGvoXzegkO5cU=
我使用 Java String.matches
函数。
Key的描述是这样的:
基本形式:$s0$params$salt$key
这些值代表:
- s0 - 具有 128 位盐和 256 位派生 key 的格式版本 0
- params - 32 位十六进制整数,包含 log2(N)(16 位)、r(8 位)和 p(8 位)
- salt - base64 编码的盐
- key - Base64 编码的派生 key
最佳答案
这是我能想到的最好的办法了。任何更好的答案将不胜感激。
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/+]+[=]*$
关于java - 匹配 scrypt 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19292911/