İSİM¶
encrypt - 64 bitlik iletileri şifreler
 
setkey - encrypt() tarafından kullanılan anahtarı belirler
 
encrypt_r - 64 bitlik iletileri şifreler (evresel)
 
setkey_r - encrypt_r() tarafından kullanılan anahtarı belirler
  (evresel)
 
KULLANIM¶
#define _XOPEN_SOURCE
#include <unistd.h>
void  encrypt (char blok[64], int im);
#define _XOPEN_SOURCE
#include <stdlib.h>
void  setkey (const char *anahtar);
#define _GNU_SOURCE
#include <crypt.h>
void  setkey_r (const char *anahtar, struct crypt_data *veri)
void  encrypt_r (char *blok, int im, struct crypt_data *veri);
Bunların herbiri 
-lcrypt ile ilintileme gerektirir.
 
 
AÇIKLAMA¶
Bu işlevler 64 bitlik iletileri şifreler ve deşifrelerler.
  
setkey() işlevi 
encrypt() işlevi tarafından
  kullanılan anahtarı belirler. Burada kullanılan 
anahtar
  parametresi bir bayt dizisidir ve her bayt 1 ya da 0 sayısal
  değerine sahiptir. 
anahtar[n] dizisinin indis değeri n=8*i-1
  olan elemanları yoksayılır, bu durumda asıl anahtar
  uzunluğu 56 bit olur.
 
setkey() işlevi kendine aktarılan tamponu 
im olarak 0
  verilmişse şifreleyerek, 0 verilmişse deşifreleyerek
  değiştirir. 
anahtar parametresi gibi 
blok parametresi
  de şifrelenmiş değerin bit gösteriminin
  vektörüdür. Sonuç aynı vektör içinde
  döner.
 
Bu iki işlev evresel değildir, yani anahtar verisi durağan 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ırlar:
 
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, initialized;
};
 
 
DÖNÜŞ DEĞERݶ
Bu işlevler herhangi bir değer döndürmezler.
 
 
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ı).
    
 
   
 
 
ÖRNEK¶
Bu örneği glibc2.2 ile derlemek için libcrypt ile ilintilemeniz
  gerekir. Anlamlı bir çalıştırma için
  
anahtar[] ve 
ileti[] dizilerini anlamlı bir bit
  kalıbı ile doldurmalısınız. crypt.h başlık
  dosyasının 
setkey() ve 
encrypt() işlevlerinin
  prototiplerini koşulsuz olarak verdiğini unutmayın.
 
#include <crypt.h>
main() {
  char anahtar[64];    /* anahtarın bit kalıbı */
  char ileti[64];      /* iletinin bit kalıbı */
  setkey(anahtar);
  encrypt(ileti, 0);   /* şifreler */
  encrypt(ileti, 1);   /* deşifreler */
}
 
 
NOTLAR¶
glibc2.2'de bu işlevler DES algoritmasını kullanır.
 
 
UYUMLULUK¶
encrypt() ve 
setkey() işlevleri SVID, SUSv2 ve POSIX
  1003.1-2001 uyumludur. 
encrypt_r() ve 
setkey_r() işlevleri
  ise GNU oluşumudur.
 
 
İLGİLİ BELGELER¶
cbc_crypt(3), 
crypt(3), 
ecb_crypt(3), 
fcrypt(3).
 
 
ÇEVİREN¶
Emin İslam Tatlı <eminislam (at) web.de>, Nisan 2004