我确实想验证使用PassLib库生成的Django框架哈希 (https://pythonhosted.org/passlib/lib/passlib.hash.django_std.html)
我的python脚本看起来像这样:
#!/usr/bin/python2.7
import sys
from passlib.hash import django_pbkdf2_sha256 as handler
def verifizieren(password_plain, django_hash):
handler.verify(password_plain, django_hash)
def main():
print (sys.argv[1])
print (sys.argv[2])
verifizieren(sys.argv[1], sys.argv[2])
main()
当我使用
在命令行中调用我的脚本时python myscript.py test pbkdf2_sha256$12000$EkKZXYXv0adl$GZppRyXed3a0y1uZMBR/F8Mu/rnpsN+7atY4hZAwlrQ=
不知何故,我的哈希被削减了。而不是
pbkdf2_sha256$12000$EkKZXYXv0adl$GZppRyXed3a0y1uZMBR/F8Mu/rnpsN+7atY4hZAwlrQ=
我的argv [2]是
pbkdf2_sha2562000/F8Mu/rnpsN+7atY4hZAwlrQ=
为什么python会切断命令行参数的其余部分? 我怎么能避免这个?
答案 0 :(得分:1)
尝试按如下方式调用脚本:
python myscript.py test 'pbkdf2_sha256$12000$EkKZXYXv0adl$GZppRyXed3a0y1uZMBR/F8Mu/rnpsN+7atY4hZAwlrQ='
第二个参数周围的单引号将保护字符串不被shell解释,因为shell会将$
后面的任何内容理解为shell变量。
由于$EkKZXYXv0adl
和$GZppRyXed3a0y1uZMBR
在您的shell环境中显然不存在,因此它们会扩展为空。