/ etc / shadow上使用哪种encryption方法?

GNU / Linux系统上/ etc / shadow使用哪种encryption方法? 我想写一个个人用途的小程序,使用相同的API,但目前我不知道从哪里开始。

提前致谢

使用crypt(3)函数。 在glibc上,使用的方法取决于盐,如果它开始于:

  • $ 1 $:它使用MD5。
  • $ 5 $:它使用SHA-256。
  • $ 6 $:它使用SHA-512。
  • $ 2a $:它使用河豚,到处都不支持。
  • 否则它使用DES。

glibc提供了多种加密方法,参见man 3 crypt,Glibc Notes部分: http : //manpages.courier-mta.org/htmlman3/crypt.3.html

在验证现有密码时,只需将加密的表单作为盐传递; 只有最初的$ id $盐部分将被使用。 当创建新密码时,用你需要的任何东西初始化id,并把一些随机的字符放在salt中。

crypt()的基本例子

 #include <stdio.h> #include <stdlib.h> #define MAX_STR 256 #define MAX_SALT 12 int main(int argc, char *argv[]) { char password[MAX_STR]; char salt[MAX_SALT]; printf("salt: "); scanf("%s", salt); printf("password: "); scanf("%s", password); printf("Encrypt '%s' : '%s'\n", password, crypt(password, salt)); return(EXIT_SUCCESS); } 

编译程序:

 $ gcc -lcrypt test.c 

我收到

未定义的引用'地穴'

所以我认为你应该编译

$ gcc test.c -lcrypt