Mengubah string dengan function Hash

Jika kalian ingin menyimpan tulisan, mungkin ada saatnya kalian tidak ingin tulisan kalian terbaca seperti tulisan aslinya. Misalnya, saat kalian ingin menyimpan password untuk login dalam database, password tersebut tidak seharusnya ditampilkan apa adanya, dan sudah seharusnya dirahasiakan. Jika password disimpan apa adanya, setiap orang yang bisa membuka database akan mengetahui password yang sudah disimpan dalam database.

Dalam PHP, kalian bisa mengubah isi string menjadi tulisan yang jauh berbeda dari tulisan aslinya. PHP menyediakan beberapa function untuk melakukan enkripsi dan perubahan tulisan agar tulisan kalian tersimpan sebagai tulisan yang berbeda. Salah satu function yang bisa kalian gunakan untuk mengubah string menjadi tulisan yang berbeda adalah hash. Penggunaan hash bisa kalian lihat di bawah ini.

<?PHP
    $s="Password";
    echo($s."(md5) => ".hash("md5", $s)."<BR />");
    echo($s."(sha1) => ".hash("sha1", $s)."<BR />");
    echo($s."(sha256) => ".hash("sha256", $s)."<BR />");
    echo($s."(ripemd160) => ".hash("ripemd160", $s)."<BR />");
    echo($s."(haval160,4) => ".hash("haval160,4", $s)."<BR />");
?>



Kalian bisa melihat hasil dari script di atas yang menunjukkan bahwa variabel $s yang berisi "Password" bisa menjadi tulisan yang berbeda-beda. Intinya, hash digunakan untuk mengubah string dengan algoritma tertentu. Algoritma yang digunakan dalam function hash akan sesuai dengan nilai parameter pertamanya.

Selain yang sudah saya contohkan di atas, ada banyak algoritma yang bisa kalian gunakan dalam function hash(). Beberapa algoritma punya function tersendiri, dan bisa digunakan tanpa function hash. Function-function lain yang kegunaannya untuk mengenkripsi atau (cuma) untuk mengubah tulisan yaitu :
  1. md5()
  2. sha1
  3. crypt
  4. crc32
  5. soundex
  6. str_rot13
Btw, hasil dari beberapa function tersebut mungkin saja bisa dibalikkan jadi string aslinya jika kalian paham algoritmanya. Beberapa tidak bisa dibalikan karena beberapa function tersebut bisa menghasilkan string yang sama dari string yang berbeda.

Di antara beberapa function di atas, ada metode enkripsi dan function-function yang menghasilkan nilai yang sama untuk beberapa input yang berbeda. Ada juga function-function yang akan selalu menghasilkan nilai yang berbeda untuk string yang berbeda.

Btw, sebaiknya, jangan gunakan str_rot13 untuk mengubah isi password karena itu bisa dibalikkan dengan mudah.