像web2py这样的php中的密码加密

2024-05-01 21:58:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我不想在php中实现web2py中的密码哈希,现在我从web2py的创建者massimo de piero那里得到了一些关于如何实现的说明,但是我仍然无法在php中实现,说明如下:

逻辑非常复杂,因为它需要处理许多选项,并且不破坏向后兼容性。在

通常哈希密码看起来像

算法$salt$hash 算法$$hash(不含盐) 哈希(旧)

哈希是使用算法、salt和用户提供的可选密钥进行计算的。关键是独一无二的。每个密码的salt是不同的。在

每次调用CRYPT()('password')都会得到一个LazyCrypt对象。此对象可以序列化为字符串。你得到的字符串总是不同的,因为它包含一个随机的盐。您不能比较其中两个字符串,因为您总是得到false,即使对于同一个密码也是如此。但是你可以将LazyObject与字符串进行比较,LazyObject将使用相同的算法和字符串中的相同salt来计算哈希值并将其与字符串中的哈希值进行比较。示例:

>>> a = CRYPT()('password')
>>> b = CRYPT()('password')
>>> sa = str(a)
>>> sb = str(b)
>>> sa == sb
False
>>> a == sb
True
>>> c = CRYPT()('wrong')
>>> c == sb
False

下面是web2py framework中用于实现加密的类:

^{pr2}$

希望有人能引导我一点, 谨致问候


Tags: 对象字符串算法false密码sapasswordhash