如何让Ubuntu的crypt(3)支持Blowfish?

mae*_*mae 7 encryption crypt blowfish glibc password-encryption

根据crypt(3)手册,Blowfish(由$ 2a $前缀表示)是受支持的密码方法之一:

ID  | Method
?????????????????????????????????????????????????????????
1   | MD5
2a  | Blowfish (not in mainline glibc; added in some
    | Linux distributions)
5   | SHA-256 (since glibc 2.7)
6   | SHA-512 (since glibc 2.7)
Run Code Online (Sandbox Code Playgroud)

然而,部分说Blowfish(不在主线glibc;在一些Linux发行版中添加)是令人困惑和未记录的,所以我有几个问题.

首先,如果"主线"glibc不支持Blowfish,那么哪个glibc呢?Ubuntu 14.04使用glibc 2.19,打包在libc6/libc6-dev软件包中.假设这是"主线"glibc,则不支持Blowfish.显然有一个叫做crypt_blowfish的补丁,为glibc增加了Blowfish支持.为什么Ubuntu默认没有启用它?最后但并非最不重要的是,在Ubuntu中使C crypt()函数了解Blowfish哈希的最简单方法是什么?

小智 4

首先,如果“主线”glibc 不支持 Blowfish,那么哪个 glibc 可以呢?

由 openwall 页面上列出的发行版构建,例如 ALT Linux 和 SUSE。如果您感兴趣,为什么它没有在主线中,您可以阅读Ulrich Drepper 的文章

为什么 Ubuntu 中没有默认启用它?

这个问题在这里讨论过:LP#1349252

最后但并非最不重要的一点是,让 Ubuntu 中的 C crypt() 函数理解 Blowfish 哈希的最简单方法是什么?

如果不构建自己的 glibc 包,可能就没有办法做到这一点。