ENCRYPT(3) | Kütüphane İşlevleri | ENCRYPT(3) |
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)
#include _XOPEN_SOURCE /* Bkz: feature_test_macros(7) */ #include <unistd.h>
#include _XOPEN_SOURCE /* Bkz: feature_test_macros(7) */ #include <stdlib.h>
#include _GNU_SOURCE /* Bkz: feature_test_macros(7) */ #include <crypt.h>
Bunların herbiri -lcrypt ile ilintileme gerektirir.
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; };
Bu işlevler herhangi bir değer döndürmez.
Yukarıdaki işlevler çağrılmadan önce errno değişkeni sıfırlanır. Başarı durumunda değeri değişmez.
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 |
encrypt(), setkey(): POSIX.1-2001, POSIX.1-2008, SUS, SVr4.
encrypt_r() ve setkey_r() işlevi GNU eklentisidir.
Glibc’deki yararlanım: Bkz. crypt(3)
Glibc’deki özellikler: Gibc-2.2’de bu işlevler DES algoritmasını kullanmaktadır.
#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); }
© 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.
1 Kasım 2020 | Linux man-pages 5.10 |