GNU / Linux系统上/ etc / shadow使用哪种encryption方法? 我想写一个个人用途的小程序,使用相同的API,但目前我不知道从哪里开始。
提前致谢
使用crypt(3)
函数。 在glibc上,使用的方法取决于盐,如果它开始于:
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