哪个是/ etc / shadow上使用的加密方法?

时间:2012-09-30 11:22:08

标签: c linux encryption

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

提前致谢

4 个答案:

答案 0 :(得分:37)

使用crypt(3)功能。在glibc上,使用的方法取决于salt,如果它以:

开头
  • $ 1 $:它使用MD5。
  • $ 5 $:它使用SHA-256。
  • $ 6 $:它使用SHA-512。
  • $ 2a $:它使用的是河豚,并不是所有地方都支持。
  • 否则使用DES。

答案 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