On this page
命令行哈希器
Shiro 1.2.0 和更高版本提供了一个命令行程序,该程序可以对几乎任何类型的字符串和资源(文件,URL,Classpath 条目)进行哈希处理。要使用它,必须安装 Java 虚拟机,并且必须在$PATH
环境变量中可以访问“ java”命令。
Usage
确保您有权访问shiro-tools-hasher-
version -cli.jar
文件。您可以在* buildroot * /tools/hasher/target
目录的源版本中找到它,也可以通过 Maven 下载。
# Use the following to download from Maven Central into
# ~/.m2/repository/org/apache/shiro/tools/shiro-tools-hasher/X.X.X/shiro-tools-hasher-X.X.X-cli.jar
$ mvn dependency:get -DgroupId=org.apache.shiro.tools -DartifactId=shiro-tools-hasher -Dclassifier=cli -Dversion=X.X.X
一旦可以访问 jar,就可以运行以下命令:
$ java -jar shiro-tools-hasher-X.X.X-cli.jar
这将打印标准(MD5,SHA1)和更复杂的密码哈希方案的所有可用选项。
Common Scenarios
请阅读上述命令的印刷说明。它将提供详尽的说明列表,可帮助您根据需要使用哈希器。但是,为方便起见,我们在下面提供了一些快速参考用法/场景。
shiro.ini 用户密码
最好确保shiro.ini
[users]
部分中的用户密码安全。要添加新的用户帐户行,请将上面的命令与**-p**
(或--password
)选项一起使用:
$ java -jar shiro-tools-hasher-X.X.X-cli.jar -p
然后它将要求您 Importing 密码,然后进行确认:
Password to hash:
Password to hash (confirm):
执行此命令时,它将打印出经过安全盐化,反复处理和散列的密码。例如:
$shiro1$SHA-256$500000$eWpVX2tGX7WCP2J+jMCNqw==$it/NRclMOHrfOvhAEFZ0mxIZRdbcfqIBdwdwdDXW2dM=
将此值用作INI 用户配置文档中定义的用户定义行中的密码(后跟任何可选角色)。例如:
[users]
...
user1 = $shiro1$SHA-256$500000$eWpVX2tGX7WCP2J+jMCNqw==$it/NRclMOHrfOvhAEFZ0mxIZRdbcfqIBdwdwdDXW2dM=
您还需要确保隐式iniRealm
使用知道如何执行安全哈希密码比较的CredentialsMatcher
。因此,还要在[main]
部分中进行配置:
[main]
...
passwordMatcher = org.apache.shiro.authc.credential.PasswordMatcher
iniRealm.credentialsMatcher = $passwordMatcher
...
MD5 checksum
尽管可以使用 JVM 支持的任何算法执行任何哈希操作,但是默认的哈希算法是 MD5,这是文件校验和通用的算法。只需使用**-r**
(或--resource
)选项来指示以下值是资源位置(而不是您希望散列的文本):
$ java -jar shiro-tools-hasher-X.X.X-cli.jar -r RESOURCE_PATH
默认情况下,RESOURCE_PATH
是文件路径,但是您可以分别使用classpath:
或url:
前缀来指定 Classpath 或 URL 资源。
Some examples:
<command> -r fileInCurrentDirectory.txt
<command> -r ../../relativePathFile.xml
<command> -r ~/documents/myfile.pdf
<command> -r /usr/local/logs/absolutePathFile.log
<command> -r url:http://foo.com/page.html <command> -r classpath:/WEB-INF/lib/something.jar