Home » PHP » Fungsi String crypt() Pada PHP

Fungsi String crypt() Pada PHP

by Hanifah Nurbaeti
by Hanifah Nurbaeti

Section Artikel

Definisi dan Penggunaan

Fungsi crypt() digunakan untuk dapat mengembalikan string berciri menggunakan algoritma DES, Blowfish, atau MD5.

Fungsi ini berperilaku berbeda pada sistem operasi yang berbeda. PHP memeriksa algoritma apa yang tersedia dan algoritma apa yang digunakan saat diinstal.

Parameter salt bersifat opsional. Namun, crypt() dapat membuat sandi yang lemah tanpa salt. Pastikan untuk menentukan salt yang cukup kuat untuk keamanan yang lebih baik.

Ada beberapa konstanta yang digunakan bersama dengan fungsi crypt(). Nilai konstanta ini ditetapkan oleh PHP saat diinstal.

Konstanta:

  • [CRYPT_STD_DES] – Hash berbasis DES standar dengan dua karakter salt dari alfabet “./0-9A-Za-z”. Menggunakan karakter yang tidak valid di salt akan menyebabkan fungsi ini gagal.
  • [CRYPT_EXT_DES] – Hash berbasis DES yang diperluas dengan salt sembilan karakter yang terdiri dari garis bawah diikuti oleh 4 byte jumlah iterasi dan 4 byte salt. Ini dikodekan sebagai karakter yang dapat dicetak, 6 bit per karakter, karakter paling tidak signifikan terlebih dahulu. Nilai 0 hingga 63 dikodekan sebagai “./0-9A-Za-z”. Menggunakan karakter yang tidak valid di salt akan menyebabkan fungsi gagal.
  • [CRYPT_MD5] – Pencirian MD5 dengan 12 karakter salt dimulai dengan $1$
  • [CRYPT_BLOWFISH] – hashing blowfish dengan salt dimulai dengan $2a$, $2x$ atau $2y$, parameter biaya dua digit “$”, dan 22 karakter dari alfabet “./0-9A-Za-z” . Menggunakan karakter di luar alfabet akan menyebabkan fungsi ini mengembalikan string panjang-nol. Parameter “$” adalah logaritma basis-2 dari jumlah iterasi untuk algoritme hashing yang dibelah Blowfish dan harus berada dalam kisaran 04-31. Nilai di luar rentang ini akan menyebabkan fungsi gagal.
  • [CRYPT_SHA_256] – Hash SHA-256 dengan salt 16 karakter dimulai dengan $5$. Jika string salt dimulai dengan “rounds=<N>$”, nilai numerik N digunakan untuk menunjukkan berapa kali loop hashing harus dijalankan, seperti parameter biaya pada Blowfish. Jumlah putaran default adalah 5000, ada minimum 1000 dan maksimum 999,999,999. Setiap pilihan N di luar rentang ini akan dipotong ke batas terdekat.
  • [CRYPT_SHA_512] – Hash SHA-512 dengan salt 16 karakter dimulai dengan $6$. Jika string salt dimulai dengan “rounds=<N>$”, nilai numerik N digunakan untuk menunjukkan berapa kali loop hashing harus dijalankan, seperti parameter biaya pada Blowfish. Jumlah putaran default adalah 5000, ada minimum 1000 dan maksimum 999,999,999. Setiap pilihan N di luar rentang ini akan dipotong ke batas terdekat.

Pada sistem ini di mana fungsi ini mendukung beberapa algoritme, konstanta di atas disetel ke “1” jika didukung dan “0” jika tidak didukung.

Catatan: Tidak ada fungsi decrypt . Fungsi crypt() menggunakan algoritma satu arah.

Syntax

crypt(str,salt)

Nilai Parameter

arameterDeskripsi
strRequired. Menentukan string yang akan di-hash
saltOptional. salt sebagai dasar hashing

Detail Teknis

Return Value:Mengembalikan string yang dienkode atau string yang lebih pendek dari 13 karakter dan dijamin berbeda dari salt on failure
PHP Version:4+
Changelog:PHP 5.6.0 – Menampilkan peringatan keamanan E_NOTICE jika salt dihilangkan.
PHP 5.3.7 – Menambahkan mode Blowfish $2x$ dan $2y$.
PHP 5.3.2 – Menambahkan SHA-256 dan SHA-512. Memperbaiki perilaku Blowfish pada putaran yang tidak valid mengembalikan string “kegagalan” (“* 0” atau “* 1”), alih-alih kembali ke DES.
PHP 5.3.0 – PHP sekarang berisi implementasinya sendiri untuk MD5 crypt, Standard DES, Extended DES dan algoritma Blowfish dan akan menggunakannya jika sistem tidak memiliki dukungan untuk satu atau lebih algoritma.

Contoh
Contoh ini akan menguji algoritma yang berbeda:

<?php
// 2 karakter salt
if (CRYPT_STD_DES == 1)
{
echo "Standard DES: ".crypt('something','st')."\n<br>";
}
else
{
echo "DES standar tidak didukung.\n<br>";
}

// 4 karakter salt
if (CRYPT_EXT_DES == 1)
{
echo "Extended DES: ".crypt('something','_S4..some')."\n<br>";
}
else
{
echo "Extended DES tidak didukung.\n<br>";
}

// 12 karakter salt dimulai dengan $1$
if (CRYPT_MD5 == 1)
{
echo "MD5: ".crypt('something','$1$somethin$')."\n<br>";
}
else
{
echo "MD5 tidak didukung.\n<br>";
}

// Salt dimulai dengan $2a$. Parameter biaya dua digit: 09. 22 karakter
if (CRYPT_BLOWFISH == 1)
{
echo "Blowfish: ".crypt('something','$2a$09$anexamplestringforsalt$')."\n<br>";
}
else
{
echo "Blowfish DES tidak didukung.\n<br>";
}

// 16 karakter salt dimulai dengan $5$. Jumlah putaran default adalah 5000.
if (CRYPT_SHA256 == 1)
{
echo "SHA-256: ".crypt('something','$5$rounds=5000$anexamplestringforsalt$')."\n<br>"; }
else
{
echo "SHA-256 tidak didukung.\n<br>";
}

// 16 character salt starting with $6$. The default number of rounds is 5000.
if (CRYPT_SHA512 == 1)
{
echo "SHA-512: ".crypt('something','$6$rounds=5000$anexamplestringforsalt$');
}
else
{
echo "SHA-512 tidak didukung.";
}
?>
  /* Output (tergantung sistem operasi):
Standard DES: stqAdD7zlbByI
Extended DES: _S4..someQXidlBpTUu6
MD5: $1$somethin$4NZKrUlY6r7K7.rdEOZ0w.
Blowfish: $2a$09$anexamplestringforsaleLouKejcjRlExmf1671qw3Khl49R3dfu
SHA-256: $5$rounds=5000$anexamplestringf$KIrctqsxo2wrPg5Ag/hs4jTi4PmoNKQUGWFXlVy9vu9
SHA-512: $6$rounds=5000$anexamplestringf$Oo0skOAdUFXkQxJpwzO05wgRHG0dhuaPBaOU/
oNbGpCEKlf/7oVM5wn6AN0w2vwUgA0O24oLzGQpp1XKI6LLQ0.

You may also like