man 3 crypt
明确指出它使用 DES。我以为 DES 已被弃用,但我没有看到任何迹象表明 crypt 将被弃用。
为什么它不使用 AES 而crypt(3)
被弃用?
这是否只是“DES 对于该库的目的来说足够安全”的情况,并且程序应该使用其他库来加密重要内容?
答案1
crypt
很容易被破解(事实上它是由早期 Unix 的著名贡献者 Robert Morris 编写的,作为代码破解活动的工作台),并且不应该用于任何重要的事情。
从crypt
联机帮助页:
DES 算法本身有一些怪癖,这使得使用 crypt() 接口成为除密码身份验证之外的任何其他用途的非常糟糕的选择。如果您计划在加密项目中使用 crypt() 接口,请不要这样做:获取一本关于加密的好书和广泛使用的 DES 库之一。
对于任何现实世界的使用,都有加密更强的替代方案可用,例如mcrypt
和ccrypt
(使用 AES)。