encrypt(3) - wariua/manpages-ko GitHub Wiki

NAME

encrypt, setkey, encrypt_r, setkey_r - 64๋น„ํŠธ ๋ฉ”์‹œ์ง€ ์•”ํ˜ธํ™”ํ•˜๊ธฐ

SYNOPSIS

#define _XOPEN_SOURCE       /* feature_test_macros(7) ์ฐธ๊ณ  */
#include <unistd.h>

void encrypt(char block[64], int edflag);

#define _XOPEN_SOURCE       /* feature_test_macros(7) ์ฐธ๊ณ  */
#include <stdlib.h>

void setkey(const char *key);

#define _GNU_SOURCE         /* feature_test_macros(7) ์ฐธ๊ณ  */
#include <crypt.h>

void setkey_r(const char *key, struct crypt_data *data);
void encrypt_r(char *block, int edflag, struct crypt_data *data);

๋ชจ๋‘ -lcrypt๋กœ ๋งํฌ ํ•„์š”.

DESCRIPTION

์ด ํ•จ์ˆ˜๋“ค์€ 64๋น„ํŠธ ๋ฉ”์‹œ์ง€๋ฅผ ์•”ํ˜ธํ™” ๋ฐ ๋ณตํ˜ธํ™”ํ•œ๋‹ค. setkey() ํ•จ์ˆ˜๋Š” encrypt()์—์„œ ์“ฐ๋Š” ํ‚ค๋ฅผ ์„ค์ •ํ•œ๋‹ค. ์—ฌ๊ธฐ ์“ฐ์ด๋Š” key ์ธ์ž๋Š” 64๋ฐ”์ดํŠธ์งœ๋ฆฌ ๋ฐฐ์—ด์ด๋ฉฐ ๊ฐ ๋ฐ”์ดํŠธ๊ฐ€ ์ˆซ์ž ๊ฐ’ 1 ๋˜๋Š” 0์ด๋‹ค. n=8*i-1์ธ key[n]์€ ๋ฌด์‹œํ•˜๋ฉฐ, ๋”ฐ๋ผ์„œ ์‹ค์ œ ํ‚ค ๊ธธ์ด๋Š” 56๋น„ํŠธ๋‹ค.

encrypt() ํ•จ์ˆ˜๋Š” ์ „๋‹ฌ๋ฐ›์€ ๋ฒ„ํผ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š”๋ฐ, edflag๊ฐ€ 0์ด๋ฉด ์•”ํ˜ธํ™”, 1์ด๋ฉด ๋ณตํ˜ธํ™”๋‹ค. key ์ธ์ž์ฒ˜๋Ÿผ block ์—ญ์‹œ๋„ ์•”ํ˜ธํ™”ํ•˜๋Š” ์‹ค์ œ ๊ฐ’์˜ ๋น„ํŠธ ๋ฒกํ„ฐ ํ‘œํ˜„์ด๋‹ค. ๊ฐ™์€ ๋ฒกํ„ฐ๋กœ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค.

์ด ๋‘ ํ•จ์ˆ˜๋Š” ์žฌ์ง„์ž… ๊ฐ€๋Šฅํ•˜์ง€ ์•Š๋‹ค. ์ฆ‰ ํ‚ค ๋ฐ์ดํ„ฐ๋ฅผ ์ •์  ์ €์žฅ ๊ณต๊ฐ„์— ๋‘”๋‹ค. setkey_r() ๋ฐ encrypt_r() ํ•จ์ˆ˜๋Š” ์žฌ์ง„์ž… ๊ฐ€๋Šฅ ๋ฒ„์ „์ด๋‹ค. ๋‹ค์Œ ๊ตฌ์กฐ์ฒด์— ํ‚ค ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๋Š”๋‹ค.

struct crypt_data {
    char     keysched[16 * 8];
    char     sb0[32768];
    char     sb1[32768];
    char     sb2[32768];
    char     sb3[32768];
    char     crypt_3_buf[14];
    char     current_salt[2];
    long int current_saltbits;
    int      direction;
    int      initialized;
};

setkey_r()์„ ํ˜ธ์ถœํ•˜๊ธฐ ์ „์— data->initialized๋ฅผ 0์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค.

RETURN VALUE

์ด ํ•จ์ˆ˜๋“ค์€ ์•„๋ฌด ๊ฐ’๋„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š”๋‹ค.

ERRORS

์œ„ ํ•จ์ˆ˜๋“ค์„ ํ˜ธ์ถœํ•˜๊ธฐ ์ „์— errno๋ฅผ 0์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค. ์„ฑ๊ณต ์‹œ์—๋Š” ๋ฐ”๋€Œ์ง€ ์•Š๋Š”๋‹ค.

ENOSYS
ํ•จ์ˆ˜๊ฐ€ ์ œ๊ณต๋˜์ง€ ์•Š๋Š”๋‹ค. (์˜ˆ๋ฅผ ๋“ค์–ด ๊ณผ๊ฑฐ์˜ ๋ฏธ๊ตญ ์ˆ˜์ถœ ๊ทœ์ œ ๋•Œ๋ฌธ์—.)

VERSIONS

๋” ์ด์ƒ ์•ˆ์ „ํ•˜์ง€ ์•Š๋‹ค๊ณ  ๋ณด๋Š” DES ๋ธ”๋ก ์•”ํ˜ธ๋ฅผ ์ด์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— crypt(), crypt_r(), setkey(), setkey_r()์ด glibc 2.28์—์„œ ์ œ๊ฑฐ๋˜์—ˆ๋‹ค. ์‘์šฉ๋“ค์€ libgcrypt ๊ฐ™์€ ํ˜„๋Œ€์ ์ธ ์•”ํ˜ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ฒŒ ์ข‹๋‹ค.

ATTRIBUTES

์ด ์ ˆ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์šฉ์–ด๋“ค์— ๋Œ€ํ•œ ์„ค๋ช…์€ attributes(7)๋ฅผ ๋ณด๋ผ.

์ธํ„ฐํŽ˜์ด์Šค ์†์„ฑ ๊ฐ’
encrypt(), setkey() ์Šค๋ ˆ๋“œ ์•ˆ์ „์„ฑ MT-Unsafe race:crypt
encrypt_r(), setkey_r() ์Šค๋ ˆ๋“œ ์•ˆ์ „์„ฑ MT-Safe

CONFORMING TO

encrypt(), setkey(): POSIX.1-2001, POSIX.1-2008, SUS, SVr4.

ํ•จ์ˆ˜ encrypt_r()๊ณผ setkey_r()์€ GNU ํ™•์žฅ์ด๋‹ค.

NOTES

glibc์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์—ฌ๋ถ€

crypt(3) ์ฐธ๊ณ .

glibc์—์„œ์˜ ๊ธฐ๋Šฅ๋“ค

glibc 2.2์—์„œ ์ด ํ•จ์ˆ˜๋“ค์€ DES ์•Œ๊ณ ๋ฆฌ๋“ฌ์„ ์‚ฌ์šฉํ•œ๋‹ค.

EXAMPLE

#define _XOPEN_SOURCE
#include <stdio.h> #include <stdlib.h>
#include <unistd.h>
#include <crypt.h>

int
main(void)
{
    char key[64];
    char orig[9] = "eggplant";
    char buf[64];
    char txt[9];
    int i, j;

    for (i = 0; i < 64; i++) {
        key[i] = rand() & 1;
    }

    for (i = 0; i < 8; i++) {
        for (j = 0; j < 8; j++) {
            buf[i * 8 + j] = orig[i] >> j & 1;
        }
        setkey(key);
    }
    printf("Before encrypting: %s\n", orig);

    encrypt(buf, 0);
    for (i = 0; i < 8; i++) {
        for (j = 0, txt[i] = '\0'; j < 8; j++) {
            txt[i] |= buf[i * 8 + j] << j;
        }
        txt[8] = '\0';
    }
    printf("After encrypting:  %s\n", txt);

    encrypt(buf, 1);
    for (i = 0; i < 8; i++) {
        for (j = 0, txt[i] = '\0'; j < 8; j++) {
            txt[i] |= buf[i * 8 + j] << j;
        }
        txt[8] = '\0';
    }
    printf("After decrypting:  %s\n", txt);
    exit(EXIT_SUCCESS);
}

SEE ALSO

cbc_crypt(3), crypt(3), ecb_crypt(3)


2018-04-30

โš ๏ธ **GitHub.com Fallback** โš ๏ธ