运行mkpasswd -m sha-512 -S salt1234 password
会导致以下结果:
$6$salt1234$Zr07alHmuONZlfKILiGKKULQZaBG6Qmf5smHCNH35KnciTapZ7dItwaCv5SKZ1xH9ydG59SCgkdtsTqVWGhk81
我有一段Python代码,我认为它会输出相同的代码,但不是:
import hashlib, base64
print(base64.b64encode(hashlib.sha512('password' + 'salt1234').digest()))
结果是:
nOkBUt6l7zlKAfjtk1EfB0TmckXfDiA4FPLcpywOLORZ1PWQK4+PZVEiT4+9rFjqR3xnaruZBiRjDGcDpxxTig==
不知道我做错了什么。
另一个问题是,如何告诉sha512函数执行自定义循环。似乎只需要一个论点。
mkpasswd
是^{一个小的研究指向specification for SHA256-crypt and SHA512-crypt,它显示哈希被默认应用5000次。您可以使用
-R
切换到mkpasswd
;-R 5000
来指定不同的轮次数,这样确实可以得到相同的输出:命令行工具提供的最小轮次数为1000:
算法更复杂一些,需要创建几个摘要。您可以通过^{} function 访问C
crypt()
函数,并像mkpasswd
命令行那样驱动它。如果} list 来告诉您平台支持哪些方法。因为这使用了与
SHA512-crypt
方法可用,这取决于您的平台;Python 3版本的crypt
模块提供了一个^{mkpasswd
完全相同的库,所以您的操作系统显然支持SHA512-crypt
,Python也可以访问。您需要在salt前面加上
'$6$
来指定不同的方法。您可以通过在'$6$'
字符串和salt之间添加'rounds=<N>$'
字符串来指定循环数:然后,这将生成与
mkpasswd
命令行相同的输出:您需要使用^{} :
这里是基于规范的
sha512_crypt
函数的纯python3实现。这仅用于说明,请始终使用crypt.crypt
代替!相关问题 更多 >
编程相关推荐