pbkdf2_hmac在django需要很长时间

问题描述 投票:2回答:1

我正在对django rest框架API进行一些分析,并使用基于cProfile的分析中间件,我得到以下输出:

Sat Mar  2 23:55:13 2019    /var/folders/jr/something
41224 function calls (40529 primitive calls) in 0.182 seconds

Ordered by: internal time

ncalls  tottime  percall  cumtime  percall filename:lineno(function)
    1    0.124    0.124    0.124    0.124 {built-in method _hashlib.pbkdf2_hmac}
   11    0.006    0.001    0.007    0.001 {method 'execute' of 'psycopg2.extensions.cursor' objects}
  252    0.003    0.000    0.003    0.000 {built-in method posix.stat}
   11    0.002    0.000    0.009    0.001 /Users/my-local-user/.pyenv/versions/3.7.0/lib/python3.7/traceback.py:312(extract)

基于此,调用_hashlib.pbkdf2_hmac一次占用总执行时间的近70%用于单个请求!

我没有找到关于此的大量信息,除了它在openSSL中使用 - 但我在没有ssl的情况下在本地运行。

为什么我的时间花在加密函数上用于简单的API请求?

python django django-rest-framework
1个回答
2
投票

pbkdf2的设计运行缓慢。目的很难计算,因此强制执行需要花费大量时间。

如果要在没有这种慢的情况下分析数据,可以调低此计算所采用的迭代次数。有关详细信息,请参阅Password management in Django。请记住仅将其调低以用于测试和分析,因为在生产环境中以低迭代次数运行它会带来安全风险!

© www.soinside.com 2019 - 2024. All rights reserved.