ปัญหา เข้ารหัสข้อความภาษาไทย ด้วย function ของ Mysql ENCODE, AES_ENCRYPT
จากที่เคยแนะนำการเข้ารหัสข้อความก่อนเก็บไว้ในฐานข้อมูล การเข้ารหัสข้อความในฐานข้อมูล 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
เพราะเหตุฉะนี้ ปัญหาจึงเกิด