GNU / Linux系统上/ etc / shadow上使用的加密方法是哪一种?我想为个人目的编写一个使用相同API的小程序,但目前我不知道从哪里开始。
提前致谢
答案 0 :(得分:37)
使用crypt(3)
功能。在glibc上,使用的方法取决于salt,如果它以:
答案 1 :(得分:6)
glibc中提供了多种加密方法,请参阅man 3 crypt,Glibc Notes部分:http://manpages.courier-mta.org/htmlman3/crypt.3.html
验证现有密码时,只需将加密后的表单作为salt传递;只会使用最初的$ id $ salt部分。在创建新密码时,使用您需要的任何内容初始化id,并在salt中添加一些随机字符。
答案 2 :(得分:2)
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
答案 3 :(得分:-1)
我收到了
未定义对`crypt&#39;
的引用
所以我认为你应该用
编译 $ gcc test.c -lcrypt