【问题标题】:how to decrypt shiro password stored in database..?如何解密存储在数据库中的shiro密码..?
【发布时间】:2015-04-02 08:58:06
【问题描述】:

我将用户加密密码存储在数据库中。

代码:

String username = "admin";
String encrypted_password = createPassword("admin$321"); 
// $shiro1$SHA-256$500000$mAXboFyyOtBVoGi6AD8LXw==$acHoVyuQyOSOKfjqwAHXyEVTH7p9cH79yI+0O15NS0U=
System.out.println(getOriginalPassword(encrypted_password));

private static String createPassword(String password) {
DefaultPasswordService passwordService = new DefaultPasswordService();
DefaultHashService hashService = new DefaultHashService();
hashService.setHashIterations(passwordService.DEFAULT_HASH_ITERATIONS);
hashService.setHashAlgorithmName(passwordService.DEFAULT_HASH_ALGORITHM);
hashService.setGeneratePublicSalt(true);

passwordService.setHashService(hashService);
String encryptedPassword = passwordService.encryptPassword(password);
System.out.println(encryptedPassword);
return encryptedPassword;
}

private static String getOriginalPassword(String encrypted_password) {
    return null;
}

如何解密存储的密码..?

【问题讨论】:

  • 所以,要明确一点:您是在问如何解密自己加密的密码?在使用算法之前,你不应该知道它的两面吗?
  • 与@Torben 的回答相反,密码检查总是在设计良好且不易受到法律不可否认行为影响的安全系统中进行散列 使用安全散列算法的密码,并比较 散列。 这样的系统应该是不可能恢复明文密码的。如果您正在设计一个假定能够这样做的系统,那么您做错了,不仅是技术上的,而且是法律上的,以可能会破坏您的公司的方式。在继续下一步之前,请先听取合格的建议。
  • @EJP 我说的不就是这个吗?
  • 好的@EJB 我明白了谢谢......!

标签: java shiro password-recovery


【解决方案1】:

密码检查的常见方式是对用户提供的密码进行加密,并将结果与​​存储在数据库中的加密密码进行比较。

如果您需要解密密码,那么您做错了什么,如果我们知道您为什么需要解密密码,这将有助于我们更好地回答。

如果您可以解密存储的密码,那么首先对其进行加密就没有多大意义,因为加密的目的是防止密码被窥探。如果您可以解密它们,那么加密就是麻烦,而不是安全功能。

【讨论】:

  • 我正在制作用户面板,管理员/经理将在其中编辑用户信息以及更改用户密码。我没有在数据库中以明文形式存储密码.....
  • 那你就不需要解密旧密码了。只需加密新密码并保存即可。
猜你喜欢
  • 1970-01-01
  • 2014-11-04
  • 2011-07-15
  • 1970-01-01
  • 2016-12-25
  • 2021-08-17
  • 2020-03-20
  • 1970-01-01
  • 2011-08-14
相关资源
最近更新 更多