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

İSİM

       crypt - parola ve veri şifrelemesi
       crypt_r - parola ve veri şifrelemesi
       crypt_rn - parola ve veri şifrelemesi
       crypt_ra - parola ve veri şifrelemesi
       crypt_gensalt - parola ve veri şifrelemesi
       crypt_gensalt_rn - parola ve veri şifrelemesi
       crypt_gensalt_ra - parola ve veri şifrelemesi

BİLDİRİM

       #include _XOPEN_SOURCE
       #include <unistd.h>

       char *crypt (const char *key, const char *setting);

       #include _GNU_SOURCE
       #include <crypt.h>

       char *crypt_r (const char *key, const char *setting, struct crypt_data *data);

       #include _QW_SOURCE
       #include <crypt.h>

       char *crypt_rn (const char *key, const char *setting, void *data, int size);

       char *crypt_ra (const char *key, const char *setting, void **data, int *size);

       char *crypt_gensalt (const char *prefix, unsigned long count, const char *input, int size);

       char *crypt_gensalt_rn (const  char  *prefix,  unsigned  long  count,  const  char *input, int size, char
                              output, int output_size);

       char *crypt_gensalt_ra (const char *prefix, unsigned long count, const char *input, int size);

AÇIKLAMA

       crypt, crypt_r, crypt_rn ve crypt_ra işlevleri, bir tuz ve muhtemelen diğer değişkenleri de aktarmak için
       kullanılan bir dizi desteklenen yöntemden biriyle istendiği şekilde anahtarın  kriptografik  aş  işlevini
       hesaplar.

       crypt_r,  crypt_rn  ve  crypt_ra  işlevleri crypt’ten farklı olarak evrelidir. Bu işlevler sonuçlarını ve
       muhtemelen özel verilerini, bir uygulama tarafından kendilerine  belirtilen  size  boyutundaki  bir  data
       alanına  ve/veya  dinamik olarak ayırdıkları belleğe yerleştirir. Bazı aşlama algoritmaları veri alanını,
       çağrılar arasında hesaplanmış ara değerleri önbelleğe almak için kullanabilir.  Bu  sebeple,  uygulamalar
       ilk   kullanımdan   önce   veri   alanını   doğru   bir   şekilde   ilklendirmelidir.   crypt_r  yalnızca
       data->initialized’in sıfırla ilklendirilmesini gerektirir; crypt_rn ve crypt_ra için  tüm  data  alanının
       sıfırlarla  doldurulması  veya  crypt_ra  durumunda  *data’nın  NULL olması gerekir. Eğer crypt_ra, talep
       edilen aşlama algoritmasını NULL *data veya yeterli olmayan *size ile çağrırırsa gerekli  bellek  dinamik
       olarak realloc(3) ile ayrılır. Bu sebeple crypt_ra, *data NULL olmadığında bir önceki crypt_ra çağrısıyla
       veya  malloc(3)  ailesinden  bir  çağrıyla  ayrılan  bir  alana gösterici olmalıdır. crypt_ra ile ayrılan
       belleğin free(3) ile serbest bırakılması gerekir.

       crypt_gensalt, crypt_gensalt_rn, ve crypt_gensalt_ra işlevleri belirtilen prefix öneki (aşlama  yöntemini
       belirler), yineleme sayısı count (seçilen yöntem destekliyorsa) ve aslında tuz olarak kullanacak en fazla
       size  baytlık  kriptografik  değerlerden  oluşan  input  girdisi  ile  diğer  işlevlerde  setting  olarak
       kullanılabilecek bir dizge derler. Eğer yineleme  sayısı  count  0  ise,  düşük  bir  öntanımlı  seçilir.
       Rastgele  baytlar  /dev/urandom’dan  elde  edilebilir.  crypt_gensalt_rn  ve  crypt_gensalt_ra  işlevleri
       crypt_gensalt işlevinden farklı olarak evrelidir. crypt_gensalt_rn, sonuçları output_size baytlık  output
       tamponuna  yerleştirir.  crypt_gensalt_ra  ise,  sonuçları  için  bellekte  dinamik olarak yer ayırır. Bu
       belleğin free(3) ile serbest bırakılması gerekir.

DÖNÜŞ DEĞERİ

       Başarılı bir şekilde tamamlandığında crypt, crypt_r, crypt_rn ve crypt_ra işlevleri, gerçekte  kullanılan
       setting’i  ve  aşlama  işlevinin  yazdırılabilir  kodlama değerini içeren bir dizgeye gösterici döndürür.
       Dizgenin  tamamı,  crypt,  crypt_r,  crypt_rn  ve  crypt_ra’ya   yapılan   çağrılarda   setting   olarak,
       crypt_gensalt,   crypt_gensalt_rn  ve  crypt_gensalt_ra’ya  yapılan  çağrılarda  prefix  olarak  doğrudan
       kullanılabilir.

       crypt’in hata durumundaki davranışları tam olarak standartlaştırılmamıştır. Bazı gerçeklemeler  başarısız
       olamaz (süreç ölmediği sürece; bu durumda birşey döndürelemez), diğerleri NULL veya sabit dizge döndürür.
       Çoğu  gerçeklemeler  errno değişkenine atama yapmaz, bazıları yapar. SUSv2, sadece NULL döndürülmesini ve
       errno değişkenine atama yapılmasını geçerli  bir  davranış  olarak  belirtir  ve  olası  tek  bir  hatayı
       tanımlar:  ENOSYS,  "işlevsellik  bu  gerçeklenimde  desteklenmiyor".  Ne  yazık ki, mevcut çoğu uygulama
       crypt’in NULL döndürmesini işlemeye hazır değildir. Aşağıdaki açıklama  sadece  crypt  ve  crypt_r’in  bu
       gerçeklemesine  ve  crypt_rn  ile  crypt_ra işlevlerine karşılık gelir. Bu davranış, standartlara, mevcut
       uygulamalara veya gerçeklenimlere uygun olarak değişebilir.

       crypt ve crypt_r yalnızca geçersiz veya  desteklenmeyen  bir  setting  dizgesi  aktarıldığında  başarısız
       olabilir  (ve  dönebilir).  Bu  durumda  farklılığı  garanti  etmek  için uzunluğu 13 karakterden kısa ve
       setting’den farklı olan  sihirli  bir  dizgeye  gösterici  döndürür.  Bu  davranış  hem  yeni  parolaları
       tanımlarken  hem  de  mevcut  parola  aşlamalarına  karşı  kimlik doğrulaması yaparken crypt’in başarısız
       olmayacağını kabul eden eski uygulamalar için güvenlidir. crypt_rn ve crypt_ra işlevleri hatayı belirtmek
       için NULL döndürür. Dört işlevin tümü, hata olduğunda hata kodunu errno’yu atar.

       crypt_gensalt,  crypt_gensalt_rn  ve  crypt_gensalt_ra  işlevleri,  setting  için  derlenen  dizgeye  bir
       gösterici döndürür veya hata durumunda ise hata errno değişkenine atanıp NULL döndürülür.

HATALAR

       EINVAL
           crypt, crypt_r, crypt_rn, crypt_ra: setting geçersiz veya bu gerçekleme tarafından desteklenmiyor;

           crypt_gensalt,  crypt_gensalt_rn,  crypt_gensalt_ra:  prefix  geçersiz  veya bu gerçekleme tarafından
           desteklenmiyorsa; count, talep edilen prefix için geçersiz ise; input boyutu size, talep edilen  önek
           prefix ile en küçük geçerli tuz için yeterli değil ise; input NULL ise.

       ERANGE
           crypt_ra: sağlanan veri alanı boyutu size, talep edilen aşlama algoritması için yeterli değilse.

           crypt_gensalt_rn: output_size, derlenen setting dizgesini tutmak için çok küçükse.

       ENOMEM
           crypt  (sadece  özgün  glibc):  (sonraki  çağrıların  tekrar  kullanacağı)  çıktı tamponu için bellek
           ayrılamazsa;

           crypt_ra: *data NULL ise  veya  *size  talep  edilen  aşlama  algoritması  için  yeterli  değilse  ve
           realloc(3) başarılı olmazsa;

           crypt_gensalt_ra: derlenen setting dizgesi için bellek ayrılamazsa.

       ENOSYS
           crypt (SUSv2): işlevsellik bu gerçeklenimde desteklenmiyorsa;

           crypt,  crypt_r  (sadece  glibc  2.0’dan 2.0.1’e kadar): crypt eklentisi derlenmediyse ve setting MD5
           temelli algoritmadan başka bir şey istiyorsa.

       EOPNOTSUPP
           crypt, crypt_r (sadece glibc 2.0.2’den 2.1.3’e kadar): crypt eklentisi derlenmediyse ve  setting  MD5
           temelli algoritmadan başka bir şey istiyorsa.

AŞLAMA YÖNTEMLERİ

       Gerçeklenen  aşlama yöntemleri, özellikle depolama ve kimlik doğrulama için kullanıcı parolasını işlemeye
       yöneliktir. Diğer birçok amaç için en iyi ihtimalle verimsizdir.

       Parola aşlamanın, güçlü parolaların yerine geçmediğini anlamak önemlidir. Parola aşlamalarına  erişebilen
       bir  saldırganın,  aşlamaya  karşı  aday  parolaları  denemesi  her zaman mümkündür. Ancak, parola aşlama
       yöntemlerinin sahip olabileceği bazı özellikler bu anahtar arama saldırılarını biraz daha zorlaştırır.

       Tuz kullanan tüm aşlama  yöntemleri  aynı  anahtar  ile  birçok  aşlama  oluşturabilir.  Tuzların  düzgün
       kullanımı bazı saldırıları yenebilir, örneğin :

        1. Aday parolaların bir denemede birçok aşlama ile denenebilmesi.

        2. Aday parolaların önceden aşlanmış listelerinin kullanılması.

        3. Parolalardan birini gerçekten tahmin etmeden iki kullanıcının (veya tek kullanıcıya ait iki hesabın),
           aynı mı yoksa farklı parolalara mı sahip olduğunu belirleyebilmek.

       Anahtar arama saldırıları, çok sayıda aday parolanın aşlama hesaplamalarına bağlıdır. Bu nedenle, iyi bir
       parola  aşlama yönteminin hesaplama maliyeti fazla olmalıdır - fakat tabii ki kullanışsız olmayacak kadar
       uzun değil.

       crypt, crypt_r, crypt_rn ve crypt_ra arayüzlerinde gerçeklenen tüm aş yöntemleri özellikle aday parolanın
       arama maliyetini artırmak için temel kriptografik ilkelin birden çok yinelemesini kullanır. Ne yazık  ki,
       donanım  iyileştirmelerinden  ötürü,  sabit maliyete sahip aşlama yöntemleri zamanla daha az güvenli hale
       geldi.

       Tuzlara ek olarak, yeni parola aşlama yöntemleri değişken yineleme sayısını kabul ediyor. Bu,  uyumluluğu
       korurken maliyetleri donanım iyileştirmelerine uyarlamayı mümkün kılar.

       Aşağıdaki aşlama yöntemleri açıklanan arayüzlerle gerçeklenebilir.

   Geleneksel DES temelli
       Bu  yöntem,  crypt işlevinin neredeyse tüm gerçeklemelerinde desteklenir. Ne yazık ki, birçok sınırlaması
       nedeniyle artık yeterli güvenliği sunmuyor. Bu nedenle, parola aşlamalarını  başka  sistemlere  taşımanız
       gerekmedikçe, yeni parolalar için kullanılmamalıdır.

           önek "" (boş dizge);
               ^[./0-9A-Za-z]{2} ile eşleşen dizge (bkz: regex(7))

           Kodlama sözdizimi
               [./0-9A-Za-z]{13}

           Azami parola uzunluğu
               8 (7 bitlik karakter kullanır)

           Etkili anahtar uzunluğu
               56 bite kadar

           Aşlama boyutu
               64 bit

           Tuz boyutu
               12 bit

           Yineleme sayısı
               25

   Genişletilmiş BSDI biçimi DES temelli
       Bu  yöntem  BSDI  üzerinde kullanılır ve David Burren’in FreeSec kütüphanesinin kullanılması nedeniyle en
       azından NetBSD, OpenBSD ve FreeBSD üzerinde de mevcuttur.

           önek "_"

           Kodlama sözdizimi
               _[./0-9A-Za-z]{19}

           Azami parola uzunluğu
               sınırsız (7 bitlik karakter kullanır)

           Etkili anahtar uzunluğu
               56 bite kadar

           Aşlama boyutu
               64 bit

           Tuz boyutu
               24 bit

           Yineleme sayısı
               1 ila 2**24-1 (tek olmalıdır)

   FreeBSD biçimi MD5 temelli
       Aslen FreeBSD için geliştirilen Poul-Henning Kamp’ın MD5 temelli parola aşlama yöntemidir.  Unix  benzeri
       çoğu  sistemde,  Solaris 10 ve üstlerinde desteklenir, resmi glibc’nin bir parçasıdır. Ana götürüsü sabit
       yineleme sayısıdır, bu da mevcut donanım için zaten çok düşüktür.

           önek "$1$"

           Kodlama sözdizimi
               \$1\$[^$]{1,8}\$[./0-9A-Za-z]{22}

           Azami parola uzunluğu
               sınırsız (8-bit karakter kullanır)

           Etkili anahtar uzunluğu
               sadece aşlama boyutuyla sınırlıdır

           Aşlama boyutu
               128 bit

           Tuz boyutu
               6 ila 48 bit

           Yineleme sayısı
               1000

   OpenBSD biçimi Blowfish temelli (bcrypt)
       bcrypt, aslen Niels Provos ve David Mazieres tarafından OpenBSD  için  geliştirilmiştir  ve  FreeBSD  ile
       NetBSD’nin  yeni  sürümlerini, Solaris 10 ve üstlerini, birçok GNU/*/Linux dağıtımında desteklenmektedir.
       Fakat resmi glibc’nin parçası değildir.

       Hem bcrypt hem de BSDI biçimi DES temelli aşlama yönteminde değişken yineleme sayısı sunulsa  da,  bcrypt
       daha  da  hızlı  donanıma  bile ölçeklenebilir, yalnızca parola kırmaya özgü bazı belirli iyileştirmelere
       izin vermez, etkin anahtar boyutu sınırlamasına sahip  değildir  ve  parolalar  için  8  bitlik  karakter
       kullanır.

           önek "$2b$"

           Kodlama sözdizimi
               \$2[abxy]\$[0-9]{2}\$[./A-Za-z0-9]{53}

           Azami parola uzunluğu
               72 (8 bitlik karakter kullanır)

           Etkili anahtar boyutu
               sadece aşlama boyutuyla sınırlıdır

           Aşlama boyutu
               184 bit

           Tuz boyutu
               128 bit

           Yineleme sayısı
               2**4 ila 2**99 (şu anki gerçeklenimler için 2**31)

       bcrypt  ile,  crypt_gensalt,  crypt_gensalt_rn ve crypt_gensalt_ra işlevlerine aktarılan count değişkeni,
       asıl yineleme sayısının 2 tabanlı logaritmasıdır.

       bcrypt aşlamaları, "$2a$" önekini  1997’den  beri  kullanıyordu.  Ancak,  2011  senesinde  crypt_blowfish
       paketinde  (1.0.4’e  kadar olan sürümler dahil) 8 bitlik parola karakterlerinin işlenmesini etkileyen bir
       gerçekleme hatası bulundu. Hatayı düzeltmenin yanı sıra, mevcut sistemlere yükseltme yöntemleri  sağlamak
       için  iki  yeni  önek tanıtıldı: hatayı tamamen yeniden tanıtan "$2x$", 7 ve 8 bitlik karakterlerin doğru
       işlenmesini güvenceleyen "$2y$". OpenBSD 5.5, crypt_blowfish’in  "$2y$"  önekiyle  aynı  etkiyi  gösteren
       "$2b$"  önekini  tanıtmıştır  ve  mevcut  crypt_blowfish’te  bunu  desteklemektedir.  Ne yazık ki, "$2a$"
       önekinin 8 bitlik parola karakterleri üzerindeki etkisi  sisteme  özgü  olarak  kabul  edilmelidir.  Yeni
       parola  aşlamaları  üretilirken,  "$2b$" ve "$2y$" önekleri kullanılmalıdır. (Bu tür aşlamaların, bu yeni
       önekleri desteklemeyen bir sisteme  aktarılması  gerekirse  önceden  oluşturulmuş  aşlamaların  aktarılan
       kopyalarındaki önek "$2a$" olarak değiştirilebilir.)

       crypt_gensalt,   crypt_gensalt_rn   ve   crypt_gensalt_ra   işlevleri,  "$2x$"  hariç  (yeni  aşlamalarda
       kullanılmamalıdır) "$2b$", "$2y$", ve "$2a$" öneklerini destekler.  crypt,  crypt_r,  crypt_rn,  crypt_ra
       işlevleri, bu dört öneki de destekler.

TAŞINABİLİRLİK

       Bir glibc 2.x sisteminde bu işlevlerden herhangi birini kullanan yazılımların, libcrypt ile ilintilenmesi
       gerekir.  Bununla  birlikte,  birçok  Unix  benzeri işletim sistemi ve GNU C Kitaplığının eski sürümleri,
       libc’de crypt işlevini içermektedir. crypt ve crypt_r glibc-2.28’de kaldırılmıştır.

       crypt_r,  crypt_rn,  crypt_ra,  crypt_gensalt,  crypt_gensalt_rn  ve   crypt_gensalt_ra   işlevleri   çok
       taşınabilir değildir.

       Desteklenen aşlama yöntemleri gerçeklenime bağımlıdır.

ÖZNİTELİKLER

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

       İşlev                        Öznitelik      Değer
       crypt, crypt_gensalt         Evre Güvenliği ÇEG-hayır yarış:crypt
       crypt_r, crypt_rn, crypt_ra, Evre Güvenliği ÇEG-evet
       crypt_gensalt_rn,
       crypt_gensalt_ra

TARİHÇE

       Rotor  temelli  crypt işlevi Sürüm 6 AT&T UNIX’te göründü. "Geleneksel" DES temelli crypt ilk kez Sürüm 7
       AT&T UNIX’te göründü.

       crypt işlevi SVID, X/OPEN uyumludur ve BSD 4.3 üzerinde  kullanılmaktadır.  crypt  tarafından  döndürülen
       dizgelerin uyumlu sistemler arasında taşınabilir olması gerekmez.

       crypt_r  GNU  C  Kütüphanesinden  kaynaklanır.  HP-UX ve MKS Toolkit üzerinde de bir crypt_r içerir fakat
       tanım ve anlamsallığı farklıdır.

       crypt_gensalt Openwall eklentisidir. Solaris 10 ve üstü  de  bir  crypt_gensalt  içerir  fakat  tanım  ve
       anlamsallığı farklıdır.

       crypt_rn, crypt_ra, crypt_gensalt_rn ve crypt_gensalt_ra işlevleri de Openwall eklentisidir.

HATA AYIKLAMA

       crypt  ve  crypt_gensalt  işlevlerinin  dönüş değerleri sonraki çağrılar tarafından üzerine yazılan sabit
       tamponları gösterir. (Solaris’in son sürümlerinde crypt evreye özgü verileri  kullanır  ve  aslında  evre
       güvenliklidir.)

       Hata  durumunda  crypt  işlevinin  diğer  gerçeklemelerinden  döndürülen dizgeler, salt okunur konumlarda
       tutulur veya yalnızca bir kez ilklendirilir, bu da normalde göstericisi crypt işlevinin dönüş değeri olan
       tamponu sıfırlarla doldurmaya çalışmayı her zaman emniyetsiz  yapar,  aksi  takdirde  güvenlik  açısından
       tercih  edilebilir.  Uygulamanın çıktı tamponlarında tam denetime (ve çoğu zaman özel verilerin bir kısmı
       üzerinde de) sahip olduğu, crypt_r, crypt_rn  veya  crypt_ra  işlevlerinin  kullanılmasıyla  bu  sorundan
       kaçınılabilir. Ne yazık ki bu işlevler, crypt işlevinin istenmeyen bu özelliğine sahip sistemlerde mevcut
       değildir.

       Evre  güvenlikli  crypt_r  kullanan  uygulamalar,  crypt_data  yapısı  için büyük alan (128 KB’den fazla)
       ayırmaya ihtiyaç duyar. Her evre, bu yapının ayrı bir  örneğine  ihtiyaç  duyar.  crypt_r  arayüzü,  ikil
       uyumluğu  bozmadan, büyük miktarda özel veri tutabilen bir aşlama algoritmasının gerçeklenmesini imkansız
       kılar.  crypt_ra,  kullanılan  aşlama  algoritması  için  gereken   ayırma   boyutunun   dinamik   olarak
       arttırılmasına izin verir. Ne yazık ki crypt_ra işlevi, crypt_r işlevine göre daha az taşınabilirdir.

       Çok  evreli  uygulamalar  veya  evre  güvenlikli  olması gereken kütüphane işlevleri crypt_gensalt yerine
       crypt_gensalt_rn veya crypt_gensalt_ra kullanmalıdır.

İLGİLİ BELGELER

       login(1), passwd(1),  crypto(3),  encrypt(3),  free(3),getpass(3),  getpwent(3),  malloc(3),  realloc(3),
       shadow(3), passwd(5), shadow(5), regex(7), pam(8)

ÇEVİREN

       © 2004 Emin İslam Tatlı
       © 2022 Fatih Koçer
       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.

crypt_blowfish 1.3                                7 Temmuz 2014                                         CRYPT(3)