ada*_*ski 4 python windows crypt python-2.7 python-3.3
在IDLE和Python版本3.3.2中,我尝试调用python模块,如下所示:
hash2 = crypt(word, salt)
Run Code Online (Sandbox Code Playgroud)
我在我的程序顶部导入它,如下所示:
from crypt import *
Run Code Online (Sandbox Code Playgroud)
我得到的结果如下:
Traceback (most recent call last):
File "C:\none\of\your\business\adams.py", line 10, in <module>
from crypt import *
File "C:\Python33\lib\crypt.py", line 3, in <module>
import _crypt
ImportError: No module named '_crypt'
Run Code Online (Sandbox Code Playgroud)
但是,当我adams.py在Ubuntu中使用Python 2.7.3 执行相同的文件时,它执行完美 - 没有错误.
我尝试了以下解决Windows和Python 3.3.2的问题(虽然我确定操作系统不是问题,Python版本或我使用的语法是问题):
Python33目录重命名Lib为libcrypt.py中lib来_crypt.py.然而,事实证明整个crypt.py模块依赖于一个外部模块_crypt.py._crypt.py 它不是Python,对吗?这是我...(?)我正在使用语法导入和使用2.7.3中可接受但不在3.3.2中的外部模块.或者我在3.3.2中发现了一个错误?
Kou*_*avi 10
更好的方法是使用python passlib模块生成兼容的linux密码哈希值(我假设这是你最想要的).我已经通过在rootpw和用户属性中注入生成的散列密码值来使用Kickstart文件验证了这一点.您需要的功能是:
from passlib.hash import md5_crypt as md5
from passlib.hash import sha256_crypt as sha256
from passlib.hash import sha512_crypt as sha512
md5_passwd = md5.encrypt(passwd, rounds=5000, implicit_rounds=True)
sha256_passwd = sha256.encrypt(passwd, rounds=5000, implicit_rounds=True)
sha512_passwd = sha512.encrypt(passwd, rounds=5000, implicit_rounds=True)
Run Code Online (Sandbox Code Playgroud)
第一个参数是不言自明的.
第二个和第三个参数与规范合规性有关,并且需要生成与Linux兼容的密码哈希***
(参见:Passlib:SHA256规范,格式和算法)
***注意:使用SHA512进行测试但我认为没有理由不适用于SHA256或MD5.
| 归档时间: |
|
| 查看次数: |
17955 次 |
| 最近记录: |