okeh ketemu lagi dengan saya di acara yang sama dan channel yang sama…. wkwkwkwkwkw… hmmm… sekarang ane mau bahas tentang enkripsi sekaligus dekripsi soalnya ney pasangan gak bisa dipisahin… seperti adam dan hawa, alah lebay ane… hehehehe… okeh, ane cukupun dulu lebuy bin maun….
jadi begini… enkripsi itu bahasa gampangnya kayak gene… ane punya surat yang mau dikirim ke orang, misalnya surat cinta… (teringat masa SMP, gak ada Ponsel) nah supaya gak ketauan sama orang gimana caranya ya??? ada bermacam – macam cara… salah satunya kirim lewat mimpi…. minta bantuan kawan dan masih banyak lage… nah misalnya kita pilih cara kirim lewat teman… yang jadi masalah… surat ini sangat rahasia, bahkan si temen deket yang ngirim ney juga gak boleh tau… trus gimana dunkz…??? di situlah kita bisa menggunakan metode enkripsi… jadi simple nya, lok jaman om dulu, tinggal ngerubah susunan kata nya kayak gini misalnya :
A = I, B = A, I=B, C=F
jadi kalau kita mau nulis AKU CINTA KAMU, berati nulisnya gene IKU FANTI KIMU…. hehehe….
untuk alasan keamanan kayak gene kemudian dikembangkan juga di komputer tentang enkripsi dan dekripsi… ane mungkin gak panjang lebar ngebahas konsep nya… soalnya anda masih bisa googling dan masih banyak di luar sana… (lah yang anda bahas ini juga kan bisa di googling?) apa yang ane buat ini mungkin hanya menambah sedikit dari perbendaharaan aja ghitu loh…
okeh langsung aja… di PHP ada beberapa fungsi yang digunakan untuk melakukan proses enkripsi, misalnya kayak gene….
[sourcecode language="php"]
<?php
$crypt_md5=md5("dicoba");
$crypt_sha1=sha1("dicoba");
$crypt_crc32=crc32("dicoba");
echo "enkripsi kata 'dicoba' <br>";
echo "enkripsi md5 : ".$crypt_md5."<br>";
echo "enkripsi sha1 : ".$crypt_sha1."<br>";
echo "enkripsi crc32 : ".$crypt_crc32."<br>";
?>
[/sourcecode]
ya misalnya hasilnya kayak gene :
[sourcecode language="php"]
enkripsi kata ‘dicoba’
enkripsi md5 : 9c271c6bdbff33bbe7b0f6e2b24f60ed
enkripsi sha1 : 9774c4ed3143b4a7378118fe3fab5ffa0c0d93e8
enkripsi crc32 : -1310493240
[/sourcecode]
sintaks diatas untuk mengenkripsi aja… nah untuk dekrispi nya gimana??? kalau ane mau cari cepetnya ane pake sintaks ney :
[sourcecode language="php"]
<?php
$string="sembunyikan aku ya";
$encrypt=base64_encode($string);
$decrypt=base64_decode($encrypt);
echo "Kata Yang di Enkripsi : ".$string."<br>";
echo "Hasil Enkrispi : ".$encrypt."<br>";
echo "Hasil Dekripsi : ".$decrypt."<br>";
?>
[/sourcecode]
hasilnya kurang lebih kayak gene :
[sourcecode language="php"]
Kata Yang di Enkripsi : sembunyikan aku ya
Hasil Enkrispi : c2VtYnVueWlrYW4gYWt1IHlh
Hasil Dekripsi : sembunyikan aku ya
[/sourcecode]
cuman lok diatas tinggal di dekrip aja langsung keliatan… bagi orang yang juga ngerti tentang enkripsi… sekarang lok mau yang sedikit lebih ribet pake metode enkripsi BlowFish gmana???
ane dapet dari http://phpclasses.org ada beberapa class php yang bisa dipake buat enkrispi dan dekripsi dengan algoritma enkrispi BlowFish… cara make nya gimana????
sekarang buat dua File… File yang pertama dengan Nama : Cipher.php dan contoh.php… abis ntu kopas sintaks di bawah ini… jangan tanya apa artinya… ane sendiri belum ngerti… tapi itu gunaya class… tinggal dipake aja… okeh copy dan paste sintaks di bawah ini pada file Cipher.php
Cipher.php
[sourcecode language="php"]
<?php
/**
* Cipher
*
* Simple mcrypt interface.
*
* Cipher is a simple class for working with mcrypt.
*
* @package Cipher
* @author Nathan Lucas <nathan@gimpstraw.com>
* @link http://www.gimpstraw.com/
* @copyright Copyright (c) 2008, Nathan Lucas
* @version 2.0.0
*
* Added $iv to both encrypt() and decrypt() allowing you to use preset IVs
* while encrypting/decrypting data.
*
* Also added getIV(), which returns the instance's current IV in base64
* allowing you to store this IV for use on other instances of Cipher.
*/
class Cipher {
/**
* Algorithm to use.
*
* @access private
* @var string
*/
private $algo;
/**
* Encryption mode.
*
* @access private
* @var string
*/
private $mode;
/**
* Randomization source.
*
* @access private
* @var integer
*/
private $source;
/**
* Initialization vector.
*
* @access private
* @var string
*/
private $iv = null;
/**
* Encryption key.
*
* @access private
* @var string
*/
private $key = null;
/**
* Cipher($algo, $mode, $source)
*
* Cipher constructor. Sets the algorithm being used, the encryption
* mode, and the IV.
*
* @param string $algo
* @param string $mode
* @param integer $source (randomization source)
* @access public
* @return void
*/
public function __construct($algo = MCRYPT_3DES, $mode = MCRYPT_MODE_CBC, $source = MCRYPT_RAND) {
$this->algo = $algo;
$this->mode = $mode;
$this->source = $source;
if (is_null($this->algo) || (strlen($this->algo) == 0)) {
$this->algo = MCRYPT_3DES;
}
if (is_null($this->mode) || (strlen($this->mode) == 0)) {
$this->mode = MCRYPT_MODE_CBC;
}
}
/**
* encrypt($data, $key, $iv)
*
* Returns encrpyted $data, base64 encoded. $key must be specified at
* least once, it can be changed at any point.
*
* @param string $data
* @param mixed $key
* @param string $iv
* @access public
* @return string
*/
public function encrypt($data, $key = null, $iv = null) {
$key = (strlen($key) == 0) ? $key = null : $key;
$this->setKey($key);
$this->setIV($iv);
$out = mcrypt_encrypt($this->algo, $this->key, $data, $this->mode, $this->iv);
return base64_encode($out);
}
/**
* decrypt($data, $key, $iv)
*
* Returns decrypted $data. $key must be specified at least once, it can
* be changed at any point.
*
* @param mixed $data
* @param mixed $key
* @param string $iv
* @access public
* @return string
*/
public function decrypt($data, $key = null, $iv = null) {
$key = (strlen($key) == 0) ? $key = null : $key;
$this->setKey($key);
$this->setIV($iv);
$data = base64_decode($data);
$out = mcrypt_decrypt($this->algo, $this->key, $data, $this->mode, $this->iv);
return trim($out);
}
/**
* getIV()
*
* Returns the IV used for encryption so you can use it again in another
* Cipher instance to decrypt data.
*
* @access public
* @return string
*/
public function getIV() {
return base64_encode($this->iv);
}
/**
* setIV($iv)
*
* Sets IV. If $iv is specified, the instance IV will be set to this. If not,
* the instance will generate an IV.
*
* @param string $iv
* @access private
* @return void
*/
private function setIV($iv) {
if (!is_null($iv)) {
$this->iv = base64_decode($iv);
}
if (is_null($this->iv)) {
$iv_size = mcrypt_get_iv_size($this->algo, $this->mode);
$this->iv = mcrypt_create_iv($iv_size, $this->source);
}
}
/**
* setKey($data, $key)
*
* Sets Cipher::key. This will be the key used for the encrypt and decrypt
* methods until another $key is specified. This will trigger an error if
* no initial key is set.
*
* @param mixed $key
* @access private
* @return void
*/
private function setKey($key) {
if (!is_null($key)) {
$key_size = mcrypt_get_key_size($this->algo, $this->mode);
$this->key = hash("sha256", $key, true);
$this->key = substr($this->key, 0, $key_size);
}
if (is_null($this->key)) {
trigger_error("You must specify a key at least once in either Cipher::encrpyt() or Cipher::decrypt().", E_USER_ERROR);
}
}
}
?>
[/sourcecode]
nah lok udah di copy dan di paste sekarang tinggal uji coba hasilnya dengan membuat file bernama contoh.php dengan sintaks sebagai bverikut :
[sourcecode language="php"]
<?php
require_once("Cipher.php");
$cipher = new Cipher(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
$kunci = "%^$%^&%*HJGHJK";
$string="sembunyikan aku";
$en = $cipher->encrypt($string, $kunci);
$de = $cipher->decrypt($en, $kunci);
echo "Enkrispi Kata : $string <br>";
echo "Hasil Enkripsi : $en <br>";
echo "Hasil Dekrispi : $de <br>";
?>
[/sourcecode]
hasilnya kurang lebih kayak gini :
[sourcecode language="php"]
Enkrispi Kata : sembunyikan aku
Hasil Enkripsi : rCRslGlylLiPRzv6A4+mdg==
Hasil Dekrispi : sembunyikan aku
[/sourcecode]
okeh… gini penjelasan sintaks diatas… require_once(“Cipher.php”) fungsinya untuk memanggil file yang pertama kita buat dengan nama Cipher.php , kemudian sintaks $cipher = new Cipher(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB); fungsinya untuk membuat sebuah objek dari class supaya bisa dipake nantinya… kata – kata MCRYPT_BLOWFISH memiliki arti metode enkripsi dan dekripsi yang digunakan adalah dengan algoritma Blowfish… trus $kunci dengan isinya yang gak karuan… fungsinya sebagai kunci yang digunakan untuk mengenkripsi dan mendekripsi… kalau kunci nya gak sama isinya, hasil dekripsi gak akan sukses… $string adalah kata – kata yang akan di enkripsi… trus sintaks $en = $cipher->encrypt($string, $kunci) adalah sintak untuk memproses enkrispi dan sintak $de = $cipher->decrypt($en, $kunci) adalah sintak untuk memproses dekripsi….
sepertinya itu aja dulu… di cobain ya moga berhasil ya….
jangan lupa mantra nya seeeppp…. mantaaaabbb…
sumber code Cipher.php dari : http://phpclasses.org oleh Nathan Lucas <nathan@gimpstraw.com>
Tuesday, January 8, 2013
Enkripsi dan Dekripsi di PHP
okeh ketemu lagi dengan saya di acara yang sama dan channel yang sama…. wkwkwkwkwkw… hmmm… sekarang ane mau bahas tentang enkripsi sekaligus dekripsi soalnya ney pasangan gak bisa dipisahin… seperti adam dan hawa, alah lebay ane… hehehehe… okeh, ane cukupun dulu lebuy bin maun….jadi begini… enkripsi itu bahasa gampangnya kayak gene… ane punya surat yang mau dikirim ke orang, misalnya surat cinta… (teringat masa SMP, gak ada Ponsel) nah supaya gak ketauan sama orang gimana caranya ya??? ada bermacam – macam cara… salah satunya kirim lewat mimpi…. minta bantuan kawan dan masih banyak lage… nah misalnya kita pilih cara kirim lewat teman… yang jadi masalah… surat ini sangat rahasia, bahkan si temen deket yang ngirim ney juga gak boleh tau… trus gimana dunkz…??? di situlah kita bisa menggunakan metode enkripsi… jadi simple nya, lok jaman om dulu, tinggal ngerubah susunan kata nya kayak gini misalnya :
A = I, B = A, I=B, C=F
jadi kalau kita mau nulis AKU CINTA KAMU, berati nulisnya gene IKU FANTI KIMU…. hehehe….
untuk alasan keamanan kayak gene kemudian dikembangkan juga di komputer tentang enkripsi dan dekripsi… ane mungkin gak panjang lebar ngebahas konsep nya… soalnya anda masih bisa googling dan masih banyak di luar sana… (lah yang anda bahas ini juga kan bisa di googling?) apa yang ane buat ini mungkin hanya menambah sedikit dari perbendaharaan aja ghitu loh…
okeh langsung aja… di PHP ada beberapa fungsi yang digunakan untuk melakukan proses enkripsi, misalnya kayak gene….
[sourcecode language="php"]
<?php
$crypt_md5=md5("dicoba");
$crypt_sha1=sha1("dicoba");
$crypt_crc32=crc32("dicoba");
echo "enkripsi kata 'dicoba' <br>";
echo "enkripsi md5 : ".$crypt_md5."<br>";
echo "enkripsi sha1 : ".$crypt_sha1."<br>";
echo "enkripsi crc32 : ".$crypt_crc32."<br>";
?>
[/sourcecode]
ya misalnya hasilnya kayak gene :
[sourcecode language="php"]
enkripsi kata ‘dicoba’
enkripsi md5 : 9c271c6bdbff33bbe7b0f6e2b24f60ed
enkripsi sha1 : 9774c4ed3143b4a7378118fe3fab5ffa0c0d93e8
enkripsi crc32 : -1310493240
[/sourcecode]
sintaks diatas untuk mengenkripsi aja… nah untuk dekrispi nya gimana??? kalau ane mau cari cepetnya ane pake sintaks ney :
[sourcecode language="php"]
<?php
$string="sembunyikan aku ya";
$encrypt=base64_encode($string);
$decrypt=base64_decode($encrypt);
echo "Kata Yang di Enkripsi : ".$string."<br>";
echo "Hasil Enkrispi : ".$encrypt."<br>";
echo "Hasil Dekripsi : ".$decrypt."<br>";
?>
[/sourcecode]
hasilnya kurang lebih kayak gene :
[sourcecode language="php"]
Kata Yang di Enkripsi : sembunyikan aku ya
Hasil Enkrispi : c2VtYnVueWlrYW4gYWt1IHlh
Hasil Dekripsi : sembunyikan aku ya
[/sourcecode]
cuman lok diatas tinggal di dekrip aja langsung keliatan… bagi orang yang juga ngerti tentang enkripsi… sekarang lok mau yang sedikit lebih ribet pake metode enkripsi BlowFish gmana???
ane dapet dari http://phpclasses.org ada beberapa class php yang bisa dipake buat enkrispi dan dekripsi dengan algoritma enkrispi BlowFish… cara make nya gimana????
sekarang buat dua File… File yang pertama dengan Nama : Cipher.php dan contoh.php… abis ntu kopas sintaks di bawah ini… jangan tanya apa artinya… ane sendiri belum ngerti… tapi itu gunaya class… tinggal dipake aja… okeh copy dan paste sintaks di bawah ini pada file Cipher.php
Cipher.php
[sourcecode language="php"]
<?php
/**
* Cipher
*
* Simple mcrypt interface.
*
* Cipher is a simple class for working with mcrypt.
*
* @package Cipher
* @author Nathan Lucas <nathan@gimpstraw.com>
* @link http://www.gimpstraw.com/
* @copyright Copyright (c) 2008, Nathan Lucas
* @version 2.0.0
*
* Added $iv to both encrypt() and decrypt() allowing you to use preset IVs
* while encrypting/decrypting data.
*
* Also added getIV(), which returns the instance's current IV in base64
* allowing you to store this IV for use on other instances of Cipher.
*/
class Cipher {
/**
* Algorithm to use.
*
* @access private
* @var string
*/
private $algo;
/**
* Encryption mode.
*
* @access private
* @var string
*/
private $mode;
/**
* Randomization source.
*
* @access private
* @var integer
*/
private $source;
/**
* Initialization vector.
*
* @access private
* @var string
*/
private $iv = null;
/**
* Encryption key.
*
* @access private
* @var string
*/
private $key = null;
/**
* Cipher($algo, $mode, $source)
*
* Cipher constructor. Sets the algorithm being used, the encryption
* mode, and the IV.
*
* @param string $algo
* @param string $mode
* @param integer $source (randomization source)
* @access public
* @return void
*/
public function __construct($algo = MCRYPT_3DES, $mode = MCRYPT_MODE_CBC, $source = MCRYPT_RAND) {
$this->algo = $algo;
$this->mode = $mode;
$this->source = $source;
if (is_null($this->algo) || (strlen($this->algo) == 0)) {
$this->algo = MCRYPT_3DES;
}
if (is_null($this->mode) || (strlen($this->mode) == 0)) {
$this->mode = MCRYPT_MODE_CBC;
}
}
/**
* encrypt($data, $key, $iv)
*
* Returns encrpyted $data, base64 encoded. $key must be specified at
* least once, it can be changed at any point.
*
* @param string $data
* @param mixed $key
* @param string $iv
* @access public
* @return string
*/
public function encrypt($data, $key = null, $iv = null) {
$key = (strlen($key) == 0) ? $key = null : $key;
$this->setKey($key);
$this->setIV($iv);
$out = mcrypt_encrypt($this->algo, $this->key, $data, $this->mode, $this->iv);
return base64_encode($out);
}
/**
* decrypt($data, $key, $iv)
*
* Returns decrypted $data. $key must be specified at least once, it can
* be changed at any point.
*
* @param mixed $data
* @param mixed $key
* @param string $iv
* @access public
* @return string
*/
public function decrypt($data, $key = null, $iv = null) {
$key = (strlen($key) == 0) ? $key = null : $key;
$this->setKey($key);
$this->setIV($iv);
$data = base64_decode($data);
$out = mcrypt_decrypt($this->algo, $this->key, $data, $this->mode, $this->iv);
return trim($out);
}
/**
* getIV()
*
* Returns the IV used for encryption so you can use it again in another
* Cipher instance to decrypt data.
*
* @access public
* @return string
*/
public function getIV() {
return base64_encode($this->iv);
}
/**
* setIV($iv)
*
* Sets IV. If $iv is specified, the instance IV will be set to this. If not,
* the instance will generate an IV.
*
* @param string $iv
* @access private
* @return void
*/
private function setIV($iv) {
if (!is_null($iv)) {
$this->iv = base64_decode($iv);
}
if (is_null($this->iv)) {
$iv_size = mcrypt_get_iv_size($this->algo, $this->mode);
$this->iv = mcrypt_create_iv($iv_size, $this->source);
}
}
/**
* setKey($data, $key)
*
* Sets Cipher::key. This will be the key used for the encrypt and decrypt
* methods until another $key is specified. This will trigger an error if
* no initial key is set.
*
* @param mixed $key
* @access private
* @return void
*/
private function setKey($key) {
if (!is_null($key)) {
$key_size = mcrypt_get_key_size($this->algo, $this->mode);
$this->key = hash("sha256", $key, true);
$this->key = substr($this->key, 0, $key_size);
}
if (is_null($this->key)) {
trigger_error("You must specify a key at least once in either Cipher::encrpyt() or Cipher::decrypt().", E_USER_ERROR);
}
}
}
?>
[/sourcecode]
nah lok udah di copy dan di paste sekarang tinggal uji coba hasilnya dengan membuat file bernama contoh.php dengan sintaks sebagai bverikut :
[sourcecode language="php"]
<?php
require_once("Cipher.php");
$cipher = new Cipher(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
$kunci = "%^$%^&%*HJGHJK";
$string="sembunyikan aku";
$en = $cipher->encrypt($string, $kunci);
$de = $cipher->decrypt($en, $kunci);
echo "Enkrispi Kata : $string <br>";
echo "Hasil Enkripsi : $en <br>";
echo "Hasil Dekrispi : $de <br>";
?>
[/sourcecode]
hasilnya kurang lebih kayak gini :
[sourcecode language="php"]
Enkrispi Kata : sembunyikan aku
Hasil Enkripsi : rCRslGlylLiPRzv6A4+mdg==
Hasil Dekrispi : sembunyikan aku
[/sourcecode]
okeh… gini penjelasan sintaks diatas… require_once(“Cipher.php”) fungsinya untuk memanggil file yang pertama kita buat dengan nama Cipher.php , kemudian sintaks $cipher = new Cipher(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB); fungsinya untuk membuat sebuah objek dari class supaya bisa dipake nantinya… kata – kata MCRYPT_BLOWFISH memiliki arti metode enkripsi dan dekripsi yang digunakan adalah dengan algoritma Blowfish… trus $kunci dengan isinya yang gak karuan… fungsinya sebagai kunci yang digunakan untuk mengenkripsi dan mendekripsi… kalau kunci nya gak sama isinya, hasil dekripsi gak akan sukses… $string adalah kata – kata yang akan di enkripsi… trus sintaks $en = $cipher->encrypt($string, $kunci) adalah sintak untuk memproses enkrispi dan sintak $de = $cipher->decrypt($en, $kunci) adalah sintak untuk memproses dekripsi….
sepertinya itu aja dulu… di cobain ya moga berhasil ya….
jangan lupa mantra nya seeeppp…. mantaaaabbb…
sumber code Cipher.php dari : http://phpclasses.org oleh Nathan Lucas <nathan@gimpstraw.com>
Subscribe to:
Post Comments
(
Atom
)
Tuesday, January 8, 2013
Subscribe to:
Post Comments
(
Atom
)
No comments :
Post a Comment