MySQL 5.5 Encode Base64

Monday, July 01, 2013

Seringkali pengguna MySQL version 5.5 dan ke bawah mengalami masalah apabila sesuatu data itu perlu diencode atau sebaliknya. Masalah MySQL tidak menyediakan fungsi tersebut.

Secara defaultnya ketika ini, apabila kita membuat installation, MySQL akan memberikan kita versi 5.5.

Jika mahu menggunakan fungsi encode base64, MySQL sediada perlu ditukar kepada MySQL version 5.6.

Ada sesetengah orang, mereka mahu menggunakan MySQL version sedia ada. Jadi, mereka perlu menambah function tersebut ke dalam application MySQL.

Kita tidak perlu susah berfikir bagaimana untuk membuat coding dan compile ke dalam aplikasi tersebut. Guna sahaja apa yang telah disediakan oleh Y.Kentaro ini.

Ini Sesuai untuk pengguna Linux.

Cara untuk install. Pada paparan terminal, download dan compile code tersebut.

 $ git clone https://github.com/y-ken/mysql-udf-base64.git  
 $ cd mysql-udf-base64  
 $ gcc -Wall -fPIC -I/usr/local/include -shared base64.c -o base64.so  
 $ sudo install -m 755 base64.so `mysql_config --plugindir`  


Selesai install, kita perlu cipta function tersebut ke dalam MySQL.

Masuk pula ke dalam application.

 mysql> CREATE FUNCTION base64encode RETURNS STRING SONAME 'base64.so';  
 mysql> CREATE FUNCTION base64decode RETURNS STRING SONAME 'base64.so';  


Selepas itu, kita boleh cuba melihat keberkesanannya.

 mysql> SELECT base64encode(nama) FROM tablesample;  


Sedikit Masalah Setelah dicuba, memang ianya berjaya. Tetapi masalah timbul, bila proses ini dilakukan bersama dengan encryption aes, hasilnya tidak dapat seperti data asal.

Contoh Encode:
 select base64encode(aes_encrypt('firdaus', 111)) from dual;  

 Result:   IcCTWM8Recp QE HRTBQ==   

Decode:
 select base64encode(aes_encrypt(' IcCTWM8Recp QE HRTBQ==', 111)) from dual;  

 Result: WC8ARIk1 q5+ gVKcUZcSQCU mEkCQAN b9x NR8LvA=  


Mungkin terdapat beberapa perkara yang saya terlepas pandang. Jadi, masalah ini akan saya lihat kemudian.


Peringatan: Semasa kita buat installation MySQL, kita perlu install MySQL library untuk development. Jika tidak, compilation akan gagal dan keluar error.
untuk install, hanya dapatkan sahaja dari repository.
 $ apt-get install libmysqlclient-dev  

Rujukan: https://github.com/y-ken/mysql-udf-base64

0 comments: