【发布时间】:2015-01-05 11:16:12
【问题描述】:
我尝试将 PasswordMatcher 与 DefaultPasswordService 与 DefaultHashService 一起使用。
DefaultHashService hashService = new DefaultHashService();
hashService.setHashIterations(10000);
hashService.setHashAlgorithmName(Sha512Hash.ALGORITHM_NAME);
hashService.setGeneratePublicSalt(true);
DefaultPasswordService passwordService = new DefaultPasswordService();
passwordService.setHashService(hashService);
String encryptedPassword = passwordService.encryptPassword("password");
System.out.println("Result:"+encryptedPassword);
这是我必须在密码列中保存到数据库中的结果。
$shiro1$SHA-512$10000$T5nkQEA3qjMLPuB/x+WN4Q==$qWViYjBljsMwH7FSvhecKlxQqXY11lv8eS4guxD9t8D4HTeKclN/muyTnhzYZ+YvI1YkEg6L7T2kM3qykUG0XQ==
一切正常。但是我的问题是为什么迭代次数和算法名称与盐和密码一起保存?在这种情况下,我们会通知潜在的攻击者,他们会转储我们的数据库有关这些重要属性的信息。
【问题讨论】:
标签: java jakarta-ee hash shiro