Parolaların Okunması
Önceki XXXII. Oylum - Şifrelemeyle İlgili İşlevler Sonraki
Parolaların Okunması
Parola okunacağında, onun gizli kalması için ekranda göstermekten kaçınmak gerekir. Aşağıdaki işlev bunu uygun bir şekilde yapmaktadır.
char *getpass
(const char *istem)
işlev
getpass kullanıcının karşısına istem'i getirir, ardından uçbirimden girilen dizgeyi ekrana yazmadan okur. Kullanıcıların dosyalara düz metin şifreleri koymamaları için, /dev/tty gerçek uçbirimine bağlanmaya çalışır; bağlanamazsa stdin ve stderr akımlarını kullanır. getpass aynı zamanda ISIG uçbirim özelliğini kullanarak INTR, QUIT ve SUSP karakterlerini uçbirimde iptal eder. (bkz. Yerel Kipler). Uçbirim getpass öncesinde ve sonrasında temizlenir, böylece yanlış yazılan şifre karakterleri kazara görünmez.
Diğer C kütüphanelerinde, getpass parolanın sadece ilk PASS_MAX baytını döndürebilir. GNU C kütüphanesinin bir sınırı yoktur, yani PASS_MAX tanımlanmamıştır.
Bu işlevin prtotipi unistd.h içindedir. PASS_MAX ise limits.h içinde tanımlanabilirdi.
Bu işlemler bütün durumlara uymayabilirler. Bu durumda, kullanıcıların kendi getpass eşdeğerini yazmaları önerilir. Örneğin, çok basit bir uygulaması şöyle olabilir:
#include <termios.h>
#include <stdio.h>

ssize_t
my_getpass (char **lineptr, size_t *n, FILE *stream)
{
  struct termios old, new;
  int nread;

  /* Ekrana yazmayı kapat, eğer yapamazsan başarısız ol. */
  if (tcgetattr (fileno (stream), &old) != 0)
    return -1;
  new = old;
  new.c_lflag &= ~ECHO;
  if (tcsetattr (fileno (stream), TCSAFLUSH, &new) != 0)
    return -1;

  /* Şifreyi oku. */
  nread = getline (lineptr, n, stream);

  /* Uçbirimi geri yükle. */
  (void) tcsetattr (fileno (stream), TCSAFLUSH, &old);

  return nread;
}
Eşdeğer uygulamamız getline ile aynı parametreleri alır (bkz. Satır Yönlenimli Girdi); kullanıcıdan istenilen biçimde bilgi isteminde bulunulabilir.
Önceki Üst Ana Başlık Sonraki
Yasal Sorunlar Başlangıç Parolaların Şifrelenmesi
Bir Linux Kitaplığı Sayfası