用于对django项目的哈希设置进行基准测试的简单管理命令

hash_benchmark的Python项目详细描述


提供一个管理命令,该命令乘以当前Django项目的 密码哈希设置

这对于比较和优化 运行环境

如何安装

  • 安装程序包:pip install hash_benchmark
  • 'hash_benchmark',添加到settings.py中已安装的应用程序中

可选,但强烈建议:

  • pip install argon2_cffi

如何使用

按照项目中的上述说明在上安装此软件包 项目生产环境的典型硬件。

使用当前密码哈希设置运行管理命令 并记下表现:

# Tests hashing performance of your installations pbkdf2_sha256
# algorithm with 100,000 iterations
> python manage.py hash_password -i 100000

Python: 2.7.10 (default, Jul 13 2015, 12:05:58)
[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)]
Django: 1.9.7
Using "pbkdf2_sha256" w/parameters (100000), verification takes, on average, 0.0821s

现在,决定这个“工作系数”(平均密码验证 持续时间)适合您的项目需要。你的目标是 尽可能多的时间散列,并且仍然具有可接受的性能 在密码验证期间为您的用户

选择正确工作级别的重要考虑事项是:

  • 更高工作系数的考虑因素:
    • 加强对哈希密码的保护- 强制攻击,可能需要较少的强制密码 更改用户的策略
  • 降低工作系数的考虑因素:
    • 用户登录速度更快
    • 当许多用户登录时,站点性能会更好 同时;
    • 大的工作因素可以被远程利用以导致DDoS 对您站点的攻击

有了这个管理命令,你现在可以做出明智的决定 关于要用于pbkdf2_u sha256及其 迭代参数。

切换到Argon2

argon2是新的密码哈希算法,在 Django 1.10安装第三方库时 (见上文)。argon2被设计成更能适应基于gpu的 暴力攻击

argon2\u cffi的实现已经非常快了,因为 它是作为一个编译c库实现的,并且是多线程的。这个 已经使它比用python编写的任何东西都要快得多。

作者于年在网上整理的偶然轶事证据 2017年1月建议,在相同的工作时间(以秒为单位)内, 配置为运行argon2的django安装估计约为 比基于sha256的算法比基于gpu的算法有1500倍的弹性 暴力攻击

Notice:

Please do not make important decisions based on these figures, do your own research!

如果Argon2适合您的项目,建议 parallelism参数应设置为 系统。内存成本应该适合您的环境。这个 默认值是1536k字节,它相当小,应该是 几乎对任何环境都是安全的。较高的内存成本值可能 提供更好的抵御GPU的能力。花费的时间 根据项目愿意花费多长时间来验证 密码。

有关详细信息,请阅读:https://argon2-cffi.readthedocs.io/en/stable/parameters.html

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
tomcat Java条带错误   java OPENTSDB fsck修复程序不更正重复点   java JavaFX在控制器内切换自身的可见性   java maven surefire插件未并行执行运行程序   读取导致Freemarker模板引擎中TemplateException的Java对象   无法使Java库与我的Android应用程序一起工作   安卓 java。lang.IllegalStateException游标   使用Java检索XML文件中的XSL URL和名称   java如何从文本文件集合中提取特定值   电子邮件java mail gmail   java为什么finalize()只被垃圾收集器调用一次?   java方法findViewById(int)对于Json类型是未定义的。蛇形   java在安卓中尝试从brother打印机打印位图时遇到以下异常   java在颤振中支持Kotlin的优势   java从后面编写文本   java制作列表。第一个列表可以有相同的数字,第二个将是价格,尝试制作第三个列表,如果它们是相同的数字,它将添加价格