Apache Shiro盐哈希密码

时间:2015-08-02 14:06:39

标签: hash shiro sha256

我需要使用Apache Shiro对哈希(SHA-256)密码进行加密。我使用了以下方法,但它使用plainText密码作为参数。但我需要从前端获取一个alredy哈希密码并将其加密并存储在服务器端。否则,如果我使用以下方法,我将不得不通过前端传递普通密码,这是不安全的。所以请建议我解决这个问题的方法。

String hashedPassword = new Sha256Hash(plainTextPassword, salt);

1 个答案:

答案 0 :(得分:2)

密码经过哈希处理后,您无法对其进行加密。 Salting的工作原理是将盐与纯文本密码相结合,并对整个事物进行散列。这就是为什么Shiro的Sha256Hash要求你给它提供纯文本密码。

通常将纯文本密码从前端传递到服务层,只要此通信是安全的(例如,用于Web UI的HTTPS)。您不应该做的唯一事情是将纯文本密码存储在数据库中(正确配置的Shiro不会这样做),因为您的数据库可能会受到损害。

将纯文本密码从前端传递到服务时,它只会在被垃圾回收之前短时间内存在于内存中。要获得密码,有人必须要么破坏你的SSL连接(在这种情况下你还要搞砸了)或者破坏你的服务器并转储内存(在这种情况下你还是搞砸了)。