【问题标题】:vulnerabilities in password hashing密码哈希中的漏洞
【发布时间】:2020-10-24 19:11:27
【问题描述】:

随附的 Python 代码接收输入字符串(例如,用户密码)的哈希函数,并使用 MD5 生成 156 位哈希。此代码中可能存在哪些使密码哈希不适用的漏洞。

#
from Crypto.Hash import MD5
import binascii

def hash(msg):

# pad message to 16 bytes
if len(msg) < 16:
    msg = msg + (16 - len(msg)) * 'A'
    
# pick first 16 bytes
msg = msg[:16]

# converts message to upper case
msg = msg.upper()

# create MD5 objects
h1 = MD5.new()
h2 = MD5.new()

# hash two parts of message separately
h1.update(msg[:8])
h2.update(msg[8:16])

# concatenate the two hashes
h = h1.digest() + h2.digest()
return h

# print message
print(binascii.hexlify(hash("Hello, this is a great passphrase, and I am 
wondering if anyone can crack it")))

【问题讨论】:

    标签: security md5 password-hash


    【解决方案1】:

    Windows 中有一个名为LM (LAN Manager) 的密码处理协议与我们在此处看到的存在类似的缺陷。我有点想解决一个你应该自己做的测验问题......但既然我喜欢它,谁在乎呢。

    从上往下:

    1. 填充没问题。
    2. 选择前 16 个字节是不正确的。你永远不应该减少熵。
    3. 不能一分为二。暴力破解 8 个字符比 16 个字符容易得多。
    4. 大写不正确。再次减少熵。
    5. MD5 不再适用于加密目的。

    我想就是这样。

    【讨论】:

      猜你喜欢
      • 2019-05-18
      • 2019-12-20
      • 1970-01-01
      • 2012-06-14
      • 1970-01-01
      • 2012-07-07
      • 1970-01-01
      • 2023-04-08
      • 2020-04-27
      相关资源
      最近更新 更多