,将加密函数的输出与/etc/passwd文件中该用户条目的PASSWORD域进行比较,若匹配成功,则允许用户登录系统。 Crypt()的加密算法基于资料加密标准DES,它将用户输入的口令作为密钥,加密一个64bit的0/1串,加密的结果又使用用户的口令再次加密;重复该过程,一共进行25次。最后的输出为一个11byte的字符串,存放在/etc/passwd的PASSWORD域。 Morris和Thompson修改了crypt()函数的实现。现在Unix系统中使用的加密函数原型如下: Char *crypt(char *salt, char *passwd) Salt是一个12位长的数字,取值范围为0到4095。它略改变了DES的输出,4096个不同的salt值使同一个口令产生不同的输出。当改变口令时,系统选择当天的一个时间,得到一个salt数值。该salt被存放在加密口令的最前面。因此,passwd文件存放的密文口令是13位。一些Unix系统,例如:HP-UX,Ultrix和BSD4.4,使用了16位或更长的salt值,这种算法称为bigcrypt()或crypt16()。 1.1.2 口令时效 /etc/passwd文件的格式使系统管理员能要求用户定期地改变他们页码:[1] [2] [3] [4] [5] [6] [7] [8] 第4页、共8页 |