Aix:如何在AIX / etc / security / passwd上生成有效的sha1 / sha256 / sha512密码哈希?

时间:2016-07-01 09:23:56

标签: algorithm hash passwords aix crypt

与其他Unix一样,AIX只存储用户密码的盐渍哈希值。 在过去,它使用DES crypt,然后是(稍微不同版本的)MD5 Crypt,与您在Linux上找到的相同。

使用更新版本的AIX并使用/​​ etc / security / passwd,您可以使用新的SHA1 / SHA256 / SHA512哈希值。它们看起来像那样(使用密码“secret”的示例哈希字符串结果):

- salted sha1   : {ssha1}12$tyiOfoE4WXucUfh/$1olYn48enIIKGOOs0ve/GE.k.sF
- salted ssha256: {ssha256}12$tyiOfoE4WXucUfh/$YDkcqbY5oKk4lwQ4pVKPy8o4MqcfVpp1ZxxvSfP0.wS
- salted ssha512: {ssha512}10$tyiOfoE4WXucUfh/$qaLbOhKx3fwIu93Hkh4Z89Vr.otLYEhRGN3b3SAZFD3mtxhqWZmY2iJKf0KB/5fuwlERv14pIN9h4XRAZtWH..

配置文件/etc/security/pwdalg.cfg解释{algo_name}之后的数字是“num_cost”,我们可以用2 ^ num_cost获取散列函数中使用的迭代次数。

我需要从后一个/ etc / security / passwd中的Scala应用程序生成有效的哈希。

我尝试调整commons-codec Sha2Crypt(https://commons.apache.org/proper/commons-codec/apidocs/src-html/org/apache/commons/codec/digest/Sha2Crypt.html)女巫实现了官方的Sha-Crypt算法(https://www.akkadia.org/drepper/SHA-crypt.txt),但这给出了错误的哈希值。

有人知道该怎么办吗?

1 个答案:

答案 0 :(得分:2)

简短的回答是,appart for md5,这是标准的unix实现,仅区别于前缀({smd5}代替" $ 1"),其他实现与标准Unix的显着不同https://www.akkadia.org/drepper/SHA-crypt.txt描述了一个地穴。事实上,他们只知道:

  • 哈希的字节数(以及字符数):ssha1为20,ssha256为32,ssh512为64
  • base64编码表(不是标准表格,但以" ./ 012"等等开头

改变了:

  • 他们使用PBKDF2 HMAC-(sha1,sha256,sha512)代替Sha-Crypt,
  • 他们使用不同的填充表
  • 迭代次数,命名为" rounds"在Unix crypt词汇表中,不是在哈希字符串开头找到的数字N(在算法名称之后)。迭代次数实际上是2 ^ N,并且在/etc/security/pwdalg.cfg中调用N" cost"

可以在Rudder AixPasswordHashAlgo.scala中找到有效的Scala实现(目前,在该拉取请求中:https://github.com/Normation/cf-clerk/pull/84/files