我在数据库中存储用户加密的密码。如何解密存储在数据库中的shiro密码..?
代码:
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;
}
如何解密存储的密码..?
所以,只需要明确一点:你在问如何解密自己加密的密码?在使用它之前不应该知道算法的两个方面吗? – GhostCat 2015-04-02 09:03:56
与@Torben的答案相反,密码检查的方式*总是*在设计合理的安全系统中完成,不容易受到合法的不可否认行为的影响*使用安全散列算法对密码进行散列*并比较*哈希。*这样的系统很难恢复明文密码。如果你正在设计一个假设有能力的系统,那么你做错了,不仅仅是技术上的,而且是合法的,这会破坏你的公司。在继续进行之前,请先获得专业建议 – EJP 2015-04-02 09:15:26
@EJP那不就是我说的吗? – Torben 2015-04-02 09:17:20