首先,上下文:我试图创建一个基于命令行的工具(Linux),它 需要登录。这个工具上的帐户与 系统级帐户——这些都不看/etc/passwd。
我计划使用与/etc/passwd相同的格式(大致)将用户帐户存储在文本文件中。
尽管没有使用系统级密码文件,使用crypt似乎 作为一种良好的使用习惯,而不是将密码存储在 明文。(虽然crypt肯定比将密码存储在 cleartext,我对其他方式持开放态度。)
我的地穴知识是基于这个: https://docs.python.org/2/library/crypt.html
文档似乎要求一些不可能的东西:“它 建议在检查时使用完全加密的密码作为salt 获取密码。“
嗯?如果我正在创建加密密码(如中创建用户时 记录)如何使用加密密码作为盐?它 还不存在。(我假设您必须使用相同的salt来创建和检查密码。)
我试过把明文密码当作盐用。这是真的 工作,但有两个问题;一个很容易克服,一个很严重:
1)明文密码的前两个字母包含在 密码加密。你可以不写前两个来解决这个问题 文件中的字符:
user_record = '%s:%s:%s' % (user_name, crypted_pw[2:], user_type)
2)使用明文密码作为盐,您似乎 减少系统中的熵。可能是我 误会盐的作用。
我得到的最佳实践是使用前两个 用户名中的字符作为salt。这合适吗, 或者是我错过了什么让这件事变得很糟糕?
我对salt的理解是它防止预计算密码 字典里的散列。我可以用标准盐 密码(比如我的首字母“JS”),但这似乎不是 攻击者的负担比使用每个用户用户名中的两个字符更重。
在application properties reference上没有与
UserDetailsService
相关的内容,因此必须不支持,而且这是一种高级配置,可以通过正常配置完成。Boot仅通过属性提供简单的配置来快速启动,如httpBasic
,您可以将两者结合起来,但请注意与Java配置的匹配程序冲突
相关问题 更多 >
编程相关推荐