V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
fucker
V2EX  ›  Python

Mac 下 python 的 crypt 问题

  •  
  •   fucker · 2014-02-19 18:16:17 +08:00 · 4151 次点击
    这是一个创建于 3965 天前的主题,其中的信息可能已经有所发展或是发生改变。
    mac下python使用crypt生成的密码和linux下生成的密文不同(linux shadow文件内的密文)
    是因为mac下的python不支持sha512,sha256还是其他什么原因?
    据我观察mac下生成的时des(unix)??
    *** 跪求mac下python生成linux中shadow内密文的方法!!***

    Ps1,不需要des加密。。
    Ps2,盐值和明文密码在两个系统下测试的时候是同一字符串

    万分感谢!!!给大神牛们跪下了。。。
    12 条回复    1970-01-01 08:00:00 +08:00
    fucker
        1
    fucker  
    OP
       2014-02-19 18:23:21 +08:00
    上面说错了,不是说python不支持sha,说的是crypt。。。。

    附一段测试代码
    import crypt
    print crypt.crypt("123456","$6$abcdabcd")

    在mac下生成的貌似是des
    在ubuntu下生成的是带盐值由$隔开的sha512
    a2z
        2
    a2z  
       2014-02-19 18:27:47 +08:00
    python里的crypt是调用操作系统的glibc,mac osx里系统的crypt只有des一种加密方式。
    我建议你用hashlib。
    fucker
        3
    fucker  
    OP
       2014-02-19 18:31:39 +08:00
    @a2z 明白了,mac os底层本身就是unix,而我之前在hpux,bsd上面观察passwd文件确实也只有des加密的密码。我去用hashlib试试,非常感谢!
    lwjef
        4
    lwjef  
       2014-02-19 18:43:27 +08:00
    fucker
        5
    fucker  
    OP
       2014-02-19 18:49:19 +08:00
    @lwjef 确实是这样,有木有别的办法?
    lwjef
        6
    lwjef  
       2014-02-19 18:53:32 +08:00
    这网页上不是有吗。

    passlib.hash.sha512_crypt
    fucker
        7
    fucker  
    OP
       2014-02-19 19:04:27 +08:00
    @lwjef 对不起我眼花光顾着看那个对比的列表了。。。我还想着要不要调用crypt.c来弄。。。谢谢谢谢谢谢!!!
    lwjef
        8
    lwjef  
       2014-02-19 19:11:54 +08:00
    from passlib.hash import sha512_crypt; print sha512_crypt.encrypt("123456",rounds=5000,salt="abcdabcd")

    https://github.com/lattera/glibc/blob/master/crypt/sha256-crypt.c#L88
    lwjef
        9
    lwjef  
       2014-02-19 19:13:32 +08:00
    passlib.hash.sha512_crypt

    这个不对,要改正下。
    fucker
        10
    fucker  
    OP
       2014-02-19 20:37:25 +08:00
    @lwjef 没错,我刚才也发现这个问题了,然后修改passlib源代码,把rounds最小值改成1,然后range(1,100000)开始算rounds值,算到5000了。。如果不是顺手过来刷新了一下,还没发现你找到了符合我要求的rounds值!真是非常感谢!!
    lwjef
        11
    lwjef  
       2014-02-19 21:30:29 +08:00
    @fucker 我从没接触过 crypt ,上面所有的都是 Google 来的,你也可以。
    fucker
        12
    fucker  
    OP
       2014-02-19 21:51:59 +08:00
    @lwjef 我之前网上搜了很久,实在找不到才来这里求助的。还是得感谢你!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1067 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:59 · PVG 02:59 · LAX 10:59 · JFK 13:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.