验证.NET中Python Passlib生成的PBKDF2 SHA512哈希

约翰·马克13

我正在迁移一个使用Passlib 1.6.2生成密码哈希的平台。加密密码的代码为(哈希值以回合的默认值调用):

from passlib.hash import pbkdf2_sha512 as pb

def hash(cleartext, rounds=10001):
    return pb.encrypt(cleartext, rounds=rounds)

输出格式如下(对于密码“ Patient3”(不带引号)):

$pbkdf2-sha512$10001$0dr7v7eWUmptrfW.9z6HkA$w9j9AMVmKAP17OosCqDxDv2hjsvzlLpF8Rra8I7p/b5746rghZ8WrgEjDpvXG5hLz1UeNLzgFa81Drbx2b7.hg

和“ Testing123”

$pbkdf2-sha512$10001$2ZuTslYKAYDQGiPkfA.B8A$ChsEXEjanEToQcPJiuVaKk0Ls3n0YK7gnxsu59rxWOawl/iKgo0XSWyaAfhFV0.Yu3QqfehB4dc7yGGsIW.ARQ

我可以看到代表:

  • 算法SHA512
  • 迭代10001
  • 盐0dr7v7eWUmptrfW.9z6HkA(可能)

Passlib算法在其站点上定义,内容为:

passlib定义的所有pbkdf2散列都采用相同的格式,即$ pbkdf2-digest $ rounds $ salt $ checksum。

$ pbkdf2-digest $用作模块化地穴格式标识符(在示例中为$ pbkdf2-sha256 $)。摘要-这指定与HMAC结合使用的特定加密哈希,以形成用于该特定哈希的PBKDF2的伪随机函数(在示例中为sha256)。rounds-应该执行的迭代次数。它被编码为无零填充的正十进制数(在示例中为6400)。salt-这是传递到PBKDF2函数中的原始盐字节的自适应base64编码。校验和-这是从PBKDF2函数返回的原始派生密钥字节的自适应base64编码。每个方案都使用其特定哈希算法(摘要)的摘要大小作为原始派生密钥的大小。通过base64编码将其放大大约4/3,从而导致校验和大小为27、43

我发现passlib.net看起来有点像废弃的beta,它使用'$ 6 $'作为算法。我无法获取它来验证密码。我尝试将算法更改为$ 6 $,但我怀疑实际上也会更改盐值。

我还尝试过将PWDTK与Salt和Hash的各种值一起使用,但是可能是因为我错误地分割了影子密码,或者在某些我不应该使用的地方提供了$。

是否有任何方法可以针对.NET中的此哈希值验证密码?还是另一种不涉及Python代理或不让用户重新提供密码的解决方案?

扎夫

通过将密码传递到PBKDF HMAC-SHA-256哈希方法中,然后将所得的哈希值与保存的哈希值部分(从Base64版本转换回来的)进行比较,来验证哈希值。

将哈希保存为二进制,然后分离哈希使用UTF-8编码PBKDF2,HMAC,SHA-256(toBinary(password,salt,10001)== hash密码将密码转换为二进制)密码:“ Patient3”

$ pbkdf2-sha512 $ 10001 $ 0dr7v7eWUmptrfW.9z6HkA $ w9j9AMVmKAP17OosCqDxDv2hjsvzlLpF8Rra8I7p / b5746rghZ8WrgEjDpvXG5hLz1Uerbzgg81

分解为(将字符串转换为标准Base64(将'。'更改为'+'并添加尾随'='填充:

pbkdf2 - sha512
10001
0dr7v7eWUmptrfW+9z6HkA==
w9j9AMVmKAP17OosCqDxDv2hjsvzlLpF8Rra8I7p/b5746rghZ8WrgEjDpvXG5hLz1UeNLzgFa81Drbx2b7+hg==

解码为十六进制:

D1DAFBBFB796526A6DADF5BEF73E8790
C3D8FD00C5662803F5ECEA2C0AA0F10EFDA18ECBF394BA45F11ADAF08EE9FDBE7BE3AAE0859F16AE01230E9BD71B984BCF551E34BCE015AF350EB6F1D9BEFE86

这很有意义:16字节(128位)盐和64字节(512位)SHA-512哈希。

使用UTF-8将“ Patient3”转换为二进制数组使用迭代计数od 10001将盐从修改后的BASE64编码转换为16字节二进制数组使用SHA-512的HMAC将其输入PBKDF2

我懂了

C3D8FD00C5662803F5ECEA2C0AA0F10EFDA18ECBF394BA45F11ADAF08EE9FDBE7BE3AAE0859F16AE01230E9BD71B984BCF551E34BCE015AF350EB6F1D9BEFE86

在对Base64进行编码时,用“。”替换“ +”字符。并删除尾随的'='字符将返回:w9j9AMVmKAP17OosCqDxDv2hjsvzlLpF8Rra8I7p / b5746rghZ8WrgEjDpvXG5hLz1UeNLzgFa81Drbx2b7.hg

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

验证.NET中Python Passlib生成的PBKDF2 SHA512哈希

来自分类Dev

在 C# 中验证 SHA512 哈希密码

来自分类Dev

SHA512在C#哈希验证中未返回相等值

来自分类Dev

比较2 sha512哈希作为python中的输入传递

来自分类Dev

python中的sha512哈希不等于php中的sha512哈希

来自分类Dev

相当于Node.js(Angular2,Ionic2)中的PHP哈希('sha512',$ x)

来自分类Dev

在Go中生成crypt()sha512哈希

来自分类Dev

如何在C中打印SHA512哈希

来自分类Dev

在 PHP 中对从 .NET 加密的 SHA512 密码进行身份验证

来自分类Dev

SQL Server验证SHA2_512哈希过程

来自分类Dev

python中的hash_hmac sha512身份验证

来自分类Dev

如何使用Node.js验证Symfony2 sha512密码

来自分类Dev

如何使用Node.js验证Symfony2 sha512密码

来自分类Dev

javascript和iOS中的PBKDF2哈希生成不同的密钥

来自分类Dev

C中的sha512哈希结果与其他语言(php,python)不同

来自分类Dev

如何使用带有正确标题和SHA512哈希令牌的Node生成正确的TOTP?

来自分类Dev

每次运行代码时,Hashlib库中的Sha512哈希产生不同的结果

来自分类Dev

验证SHA512密码if($ row ['password'] == hash('SHA512',$ upass))

来自分类Dev

C中的咸sha512,无法与Symfony2的FOSUserBundle同步

来自分类Dev

PBKDF2是否生成唯一的哈希?

来自分类Dev

Xamarin的Sha512哈希

来自分类Dev

PBKDF2密码存储-如何验证?

来自分类Dev

Perl中Crypt :: PBKDF2中HMACSHA2哈希的大小是多少?

来自分类Dev

在.NET中使用PBKDF2和HKDF进行密码哈希处理

来自分类Dev

Rfc2898 / PBKDF2以SHA256作为C#中的摘要

来自分类Dev

如何在Node.js中验证Java生成的密码哈希(SHA-256)?

来自分类Dev

同时转换为SHA512哈希

来自分类Dev

SHA512计算哈希返回乱码

来自分类Dev

PHP Sha512哈希是否足够?

Related 相关文章

  1. 1

    验证.NET中Python Passlib生成的PBKDF2 SHA512哈希

  2. 2

    在 C# 中验证 SHA512 哈希密码

  3. 3

    SHA512在C#哈希验证中未返回相等值

  4. 4

    比较2 sha512哈希作为python中的输入传递

  5. 5

    python中的sha512哈希不等于php中的sha512哈希

  6. 6

    相当于Node.js(Angular2,Ionic2)中的PHP哈希('sha512',$ x)

  7. 7

    在Go中生成crypt()sha512哈希

  8. 8

    如何在C中打印SHA512哈希

  9. 9

    在 PHP 中对从 .NET 加密的 SHA512 密码进行身份验证

  10. 10

    SQL Server验证SHA2_512哈希过程

  11. 11

    python中的hash_hmac sha512身份验证

  12. 12

    如何使用Node.js验证Symfony2 sha512密码

  13. 13

    如何使用Node.js验证Symfony2 sha512密码

  14. 14

    javascript和iOS中的PBKDF2哈希生成不同的密钥

  15. 15

    C中的sha512哈希结果与其他语言(php,python)不同

  16. 16

    如何使用带有正确标题和SHA512哈希令牌的Node生成正确的TOTP?

  17. 17

    每次运行代码时,Hashlib库中的Sha512哈希产生不同的结果

  18. 18

    验证SHA512密码if($ row ['password'] == hash('SHA512',$ upass))

  19. 19

    C中的咸sha512,无法与Symfony2的FOSUserBundle同步

  20. 20

    PBKDF2是否生成唯一的哈希?

  21. 21

    Xamarin的Sha512哈希

  22. 22

    PBKDF2密码存储-如何验证?

  23. 23

    Perl中Crypt :: PBKDF2中HMACSHA2哈希的大小是多少?

  24. 24

    在.NET中使用PBKDF2和HKDF进行密码哈希处理

  25. 25

    Rfc2898 / PBKDF2以SHA256作为C#中的摘要

  26. 26

    如何在Node.js中验证Java生成的密码哈希(SHA-256)?

  27. 27

    同时转换为SHA512哈希

  28. 28

    SHA512计算哈希返回乱码

  29. 29

    PHP Sha512哈希是否足够?

热门标签

归档