On 24-Nov-2000, Asfihani wrote:
> Maksudnya crypt(3) apa ya?

man 3 crypt

Notasi label(nomer) itu umum dipake utk menyebutkan sectionnya di man
pages.

> Darimana buat/belajar bikin crypt?

Bikin fungsinya? Atau menggunakannya? Kalo bikinnya sih liat aja
sourcenya crypt. Kalo pake php atau perl sudah ada interfacenya ke
crypt(), namanya kebetulan sama juga. Di bahasa lain yg bisa jalan di
unix saya yakin pasti implement crypt() juga.

Utk menghasilkan password yg sudah encoded (bukan encrypted!) dg
crypt(), biasanya anda tinggal pass password yg benerannya dan salt.
Salt ini mirip seperti random seed, dipake utk memberi hasil yg lain
dg string yg sama, ada 4096 kombinasi. Sebaiknya salt yg dipake
random. Karakter yg boleh dipake utk salt ini ada di man pagenya.

[~]$ perl -e 'print crypt("r4h4s14","9f"),"\n"'
9f7qfRhGHWWuA

Di contoh di atas, salt yg dipake adalah 9f dan passwordnya adalah
r4h4s14, dan string yg sudah diencode adalah 9f7qfRhGHWWuA. Kalo
perintah di atas dijalankan berulang2 hasilnya akan sama terus,
kecuali kalo saltnya diganti atau stringnya diganti. Ini kuncinya
crypt(), fungsi2 seperti ini disebut one-way function (atau hash)
karena selalu sama kalo parameternya sama, tapi fungsinya sulit sekali
di-inverse sehingga lebih efisien kalo di-brute-force daripada dicari
inversenya. Contoh one way function yg lain: MD5 dan SHA-1.

Anda perhatikan juga bahwa saltnya diletakkan di depan encoded
stringnya. Ini supaya bisa dicheck. Misalnya saya mau ngecheck apakah
password yg dikasih user itu sama dg yg disimpan. Misalnya encoded
stringnya disimpan di $encoded dan password yg diketik user ada di
$pass, maka pseudo-codenya kurang lebih:

$salt = substr($encoded, 0, 2); # saltnya dua karakter pertama
if(crypt($pass, $salt) == $encoded)
        password bener
else
        password salah

> ini Terus kalau mau bikin program authentifikasi via web yang
> membaca /etcpasswd (shadow) harus belajar apa dulu ya?

Utk ngecek passwordnya bisa pake cara di atas. Kalo sistemnya pake PAM
ya anda bisa gunakan PAM API utk authnya. Dan itu /etc/passwd jangan
dibaca langsung, gunakan fungsi getpwent(3) dan kawan2nya.

Ronny

--------------------------------------------------------------------------------
Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3
Pengelola dapat dihubungi lewat [EMAIL PROTECTED]

Kirim email ke