Provided by: manpages-tr_2.0.6-2_all bug

İSİM

       encrypt - 64 bitlik iletileri şifreler
       setkey - encrypt() için anahtarı belirler
       encrypt_r - 64 bitlik iletileri şifreler (evresel)
       setkey_r - encrypt_r() için anahtarı belirler (evresel)

BİLDİRİM

       #include _XOPEN_SOURCE    /* Bkz: feature_test_macros(7) */
       #include <unistd.h>

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

       #include _XOPEN_SOURCE    /* Bkz: feature_test_macros(7) */
       #include <stdlib.h>

       void setkey (const char *key);

       #include _GNU_SOURCE    /* Bkz: 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);

       Bunların herbiri -lcrypt ile ilintileme gerektirir.

AÇIKLAMA

       Uyarı:
           Artık  güvenli  kabul edilmeyen DES blok şifresini kullandıkları için crypt(), crypt_r(), setkey() ve
           setkey_r()  glibc-2.28’de  kaldırıldı.  Uygulamaların  libcrypt  gibi  daha  güncel   bir   şifreleme
           kütüphanesine geçmesi gerekir.

       Bu  işlevler 64 bitlik iletileri şifreler ve şifresini çözer. setkey() işlevi encrypt() işlevi tarafından
       kullanılan anahtarı belirler. Burada kullanılan key değişkeni 64 baytlık bir dizidir ve her baytın değeri
       1 ya da 0’dır. key[n] dizisinin n=8*i-1 indisli elemanları yoksayılır, bu durumda asıl  anahtar  uzunluğu
       56 bit olur.

       encrypt()  işlevi  aktarılan  tamponda değişiklik yapar, edflag değişkenine 0 aktarılırsa block içeriğini
       şifreler, 1 aktarılırsa şifresini çözer. key gibi block değişkeni de şifrelenmiş değerin bit  gösterimini
       içerir. Sonuç aynı tampon içinde döner.

       Bu  iki  işlev  evresel  değildir,  yani  anahtar verisi statik bellek bölgesinde saklanır. setkey_r() ve
       encrypt_r() işlevleri evreseldir ve anahtar verisini saklamak için crypt_data veri yapısını kullanı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() çağrısından önce data->initialized alanına 0 atanır.

DÖNÜŞ DEĞERİ

       Bu işlevler herhangi bir değer döndürmez.

HATALAR

       Yukarıdaki işlevler çağrılmadan önce errno değişkeni sıfırlanır. Başarı durumunda değeri değişmez.

       ENOSYS
           İşlev kütüphanede bulunmamaktadır (Örneğin, ABD’nin ihracat sınırlamalarından dolayı).

ÖZNİTELİKLER

       Bu bölümde kulllanılan terimlerin açıklamaları attributes(7) sayfasında bulunabilir.

       İşlev               Öznitelik      Değer
       encrypt, setkey     Evre Güvenliği ÇEG-hayır yarış:crypt
       encrypt_r, setkey_r Evre Güvenliği ÇEG-evet

UYUMLULUK

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

       encrypt_r() ve setkey_r() işlevi GNU eklentisidir.

EK BİLGİ

       Glibc’deki yararlanım: Bkz. crypt(3)

       Glibc’deki özellikler: Gibc-2.2’de bu işlevler DES algoritmasını kullanmaktadır.

ÖRNEKLER

           #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];

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

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

               encrypt(buf, 0);
               for (int i = 0; i < 8; i++) {
                   for (int j = 0, txt[i] = ’\0’; j < 8; j++) {
                       txt[i] |= buf[i * 8 + j] << j;
                   }
                   txt[8] = ’\0’;
               }
               printf("Şifrelemeden sonra:  %s\n", txt);

               encrypt(buf, 1);
               for (int i = 0; i < 8; i++) {
                   for (int j = 0, txt[i] = ’\0’; j < 8; j++) {
                       txt[i] |= buf[i * 8 + j] << j;
                   }
                   txt[8] = ’\0’;
               }
               printf("Şifre çözüldükten sonra:  %s\n", txt);
               exit(EXIT_SUCCESS);
           }

İLGİLİ BELGELER

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

ÇEVİREN

       © 2004 Emin İslam Tatlı
       © 2022 Nilgün Belma Bugüner
       Bu çeviri özgür yazılımdır: Yasaların izin verdiği ölçüde HİÇBİR GARANTİ YOKTUR.
       Lütfen, çeviri ile ilgili bildirimde bulunmak veya çeviri yapmak  için  https://github.com/TLBP/manpages-
       tr/issues adresinde "New Issue" düğmesine tıklayıp yeni bir konu açınız ve isteğinizi belirtiniz.

Linux man-pages 5.10                              1 Kasım 2020                                        ENCRYPT(3)