User Rating: 3 / 5

Star ActiveStar ActiveStar ActiveStar InactiveStar Inactive
 
จากที่เคยแนะนำการเข้ารหัสข้อความก่อนเก็บไว้ในฐานข้อมูล การเข้ารหัสข้อความในฐานข้อมูล Mysql ENCODE ENCRYPT Decode
ปัญหา เข้ารหัสข้อความที่เป็นภาษาไทย ด้วย function ของ Mysql ที่มีให้ เช่น function ENCODE(), AES_ENCRYPT()  จากตัวอย่าง ลองเข้ารหัสและถอดรหัสกลับ ปรากฏว่า บน Host Linux ที่ติดตั้ง WebServer (apache+php+Mysql) ด้วย CP Control Panels เจอปัญหาเดียวกันคือเข้ารหัสข้อความที่เป็นภาษาไทยแล้วถอดกลับมาไม่ได้ ได้ทดลองกับ...

ทดสอบ ใช้
OS windown xp, 2008 , Mysql 5.1, Mysql 5.0
SELECT DECODE( ENCODE( 'ทดสอบ', '11' ) , '11' )
SELECT AES_DECRYPT( AES_ENCRYPT( 'ทดสอบ' , 'key-mindphp.com' ) , 'key-mindphp.com' )
SELECT AES_DECRYPT( AES_ENCRYPT( CONVERT( 'ทดสอบ' USING utf8 ) , 'key-mindphp.com' ) , 'key-mindphp.com' )
ผล: ทดสอบ

OS FreeBSD 8 , Mysql 5.1
SELECT DECODE( ENCODE( 'ทดสอบ', '11' ) , '11' )
SELECT AES_DECRYPT( AES_ENCRYPT( 'ทดสอบ' , 'key-mindphp.com' ) , 'key-mindphp.com' )
SELECT AES_DECRYPT( AES_ENCRYPT( CONVERT( 'ทดสอบ' USING utf8 ) , 'key-mindphp.com' ) , 'key-mindphp.com' )
ผล: ทดสอบ

OS CENTOS 6.2, Mysql 5.1  (Cpanel, Directadmin)
SELECT DECODE( ENCODE( 'ทดสอบ', '11' ) , '11' )
SELECT AES_DECRYPT( AES_ENCRYPT( 'ทดสอบ' , 'key-mindphp.com' ) , 'key-mindphp.com' )
SELECT AES_DECRYPT( AES_ENCRYPT( CONVERT( 'ทดสอบ' USING utf8 ) , 'key-mindphp.com' ) , 'key-mindphp.com' )
ผล: e0b897e0b894e0b8aae0b8ade0b89a


OS UBUNTU 12.0, Mysql 5.5 (ติดตั้งผ่านชุดติดตั้งอัตโนมัตของ CP-Directadmin)
SELECT DECODE( ENCODE( 'ทดสอบ', '11' ) , '11' )
SELECT AES_DECRYPT( AES_ENCRYPT( 'ทดสอบ' , 'key-mindphp.com' ) , 'key-mindphp.com' )
SELECT AES_DECRYPT( AES_ENCRYPT( CONVERT( 'ทดสอบ' USING utf8 ) , 'key-mindphp.com' ) , 'key-mindphp.com' )
ผล: e0b897e0b894e0b8aae0b8ade0b89a

เพราะเหตุฉะนี้ ปัญหาจึงเกิด