在Windows中使用crypt模块?

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版本或我使用的语法是问题):

  1. 将目录中的Python33目录重命名Liblib
  2. 重命名crypt.pylib_crypt.py.然而,事实证明整个crypt.py模块依赖于一个外部模块_crypt.py.
  3. 浏览互联网以下载任何适合类似的东西 _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.

  • Crypt 是一种更简单、更短的哈希方法,是较旧的 UNIX 系统所独有的,它与 MD5/SHA 无关,也不兼容。它基本上已经过时了,当然也不安全,但如果您尝试与旧的 crypt 密码进​​行比较,您将需要专门使用 crypt,而不是 MD5 或 SHA。 (2认同)

roi*_*ppi 5

我认为这是因为cryptUnix 特定服务

就在顶部文档crypt

34.5. crypt - 检查 Unix 密码的函数

平台:Unix

  • @adampski 呃,什么?您的 IDE 无关紧要。Windows 不是 Unix。不管您使用什么 IDE,特定于 Unix 的服务在 Windows 中对您不起作用。 (2认同)