命令行哈希器

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