encrypt

Autres langues

Langue: ja

Version: 2003-04-04 (openSuse - 09/10/07)

Section: 3 (Bibliothèques de fonctions)

̾Á°

encrypt, setkey, encrypt_r, setkey_r - 64 ¥Ó¥Ã¥È¤Î¥á¥Ã¥»¡¼¥¸¤ò°Å¹æ²½¤¹¤ë

½ñ¼°

#define _XOPEN_SOURCE
#include <unistd.h>

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

#define _XOPEN_SOURCE
#include <stdlib.h>

void setkey(const char *key);

#define _GNU_SOURCE
#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 ¤Ç¥ê¥ó¥¯¤¹¤ëɬÍפ¬¤¢¤ë¡£

ÀâÌÀ

¤³¤ì¤é¤Î´Ø¿ô¤Ï¡¢64 ¥Ó¥Ã¥È¤Î¥á¥Ã¥»¡¼¥¸¤Î°Å¹æ²½¤ÈÉü¹æ²½¤ò¹Ô¤¦¡£ setkey() ´Ø¿ô¤Ï encrypt() ¤Ë¤è¤Ã¤Æ»È¤ï¤ì¤ë°Å¹æ¸°¤òÀßÄꤹ¤ë¡£ ¤³¤³¤Ç»È¤ï¤ì¤ë°ú¤­¿ô key ¤Ï 64 ¥Ð¥¤¥È¤ÎÇÛÎó¤Ç¤¢¤ê¡¢³Æ¥Ð¥¤¥È¤Ï¿ôÃÍ 1 ¤Þ¤¿¤Ï 0 ¤Ç¤¢¤ë¡£ n=8*i-1 ¤ËÂФ¹¤ë¥Ð¥¤¥È key[n] ¤Ï̵»ë¤µ¤ì¤ë¤Î¤Ç¡¢ Í­¸ú¤Ê°Å¹æ¸°¤ÎŤµ¤Ï 56 ¥Ó¥Ã¥È¤Ë¤Ê¤ë¡£

encrypt() ´Ø¿ô¤Ï¡¢ edflag ¤¬ 0 ¤Î¾ì¹ç¤Ï°Å¹æ²½¤·¡¢1 ¤¬ÅϤµ¤ì¤¿¾ì¹ç¤ÏÉü¹æ²½¤¹¤ë¤È¤¤¤¦¤è¤¦¤Ë¡¢ ÅϤµ¤ì¤¿¥Ð¥Ã¥Õ¥¡¤òÊѹ¹¤¹¤ë¡£ °ú¤­¿ô key ¤ÈƱÍͤˡ¢ block ¤Ï¥¨¥ó¥³¡¼¥É¤µ¤ì¤¿¼ÂºÝ¤ÎÃͤòɽ¸½¤¹¤ë¥Ó¥Ã¥È¤ÎÇÛÎó¤Ç¤¢¤ë¡£ ·ë²Ì¤Ï¤³¤ÎƱ¤¸ÇÛÎó¤ò»È¤Ã¤ÆÊÖ¤µ¤ì¤ë¡£

¤³¤ì¤é 2 ¤Ä¤Î´Ø¿ô¤Ï¥ê¥¨¥ó¥È¥é¥ó¥È (reentrant) ¤Ç¤Ï¤Ê¤¤¡£ ¤Ä¤Þ¤ê°Å¹æ¸°¥Ç¡¼¥¿¤ÏÀÅŪ¤ÊÎΰè¤ËÊݸ¤µ¤ì¤ë¡£ ´Ø¿ô 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 ¤ËÀßÄꤹ¤ë¤³¤È¡£

ÊÖ¤êÃÍ

¤³¤ì¤é¤Î´Ø¿ô¤Ï¡¢¤Ê¤Ë¤âÃͤòÊÖ¤µ¤Ê¤¤¡£

¥¨¥é¡¼

¾åµ­¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹Á°¤Ë errno ¤ò 0 ¤ËÀßÄꤹ¤ë¤³¤È¡£ À®¸ù¤·¤¿¾ì¹ç¡¢¤³¤ÎÃͤÏÊѹ¹¤µ¤ì¤Ê¤¤¡£
ENOSYS
(Î㤨¤Ð°ÊÁ°¤Î¥¢¥á¥ê¥«¹ç½°¹ñÍ¢½Ðµ¬À©¤Ê¤É¤Ë¤è¤ê) ¤³¤Î´Ø¿ô¤¬Ä󶡤µ¤ì¤Æ¤¤¤Ê¤¤¡£

½àµò

´Ø¿ô encrypt() ¤È setkey() ¤Ï SVr4, SUSv2, and POSIX.1-2001 ¤Ë½àµò¤¹¤ë¡£ ´Ø¿ô encrypt_r() ¤È setkey_r() ¤Ï GNU ³ÈÄ¥¤Ç¤¢¤ë¡£

Ãí°Õ

glibc 2.2 ¤Ç¤Ï¡¢¤³¤ì¤é¤Î´Ø¿ô¤Ï DES ¥¢¥ë¥´¥ê¥º¥à¤ò»È¤¦¡£

Îã

¤³¤ÎÎã¤ò glibc 2.2 ¤Ç¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤Ë¤Ï libcrypt ¤È¥ê¥ó¥¯¤¹¤ëɬÍפ¬¤¢¤ë¡£ ¼ÂºÝ¤ËÆ°ºî¤µ¤»¤ë¤¿¤á¤Ë¤Ï¡¢ÇÛÎó key[] ¤È txt[] ¤Ë Í­¸ú¤Ê¥Ó¥Ã¥È¥Ñ¥¿¡¼¥ó¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£

#define _XOPEN_SOURCE

#include <unistd.h>

#include <stdlib.h>



int

main(void)

{

    char key[64];      /* bit pattern for key */

    char txt[64];      /* bit pattern for messages */



    setkey(key);

    encrypt(txt, 0);   /* encode */

    encrypt(txt, 1);   /* decode */

}

´ØÏ¢¹àÌÜ

cbc_crypt(3), crypt(3), ecb_crypt(3), fcrypt(3), feature_test_macros(7)