การเข้ารหัสข้อความ ในฐานข้อมูล Mysql ENCODE ENCRYPT Decode
วันนี้มีคำถามที่บอร์ด เรื่องการเข้ารหัสข้อความก่อนเก็บลงในฐานข้อมูล เพื่อป้องกันไม่ใช้คนอื่น ที่อ่านออก เช่นเรา เช่า Hosting แบบ share host และข้อมูลมีความคำคัญไม่อยากให้ ใคร(เช่น เจ้าของ Hosting หรือผู้ไม่หวังดี) เข้ามาดูข้อมูลของเรา Mysql จะมี function ในการเข้ารหัส และถอดรหัสอยู่ 2 function
- ENCODE ใช้คู่กับ DECODE
- DES_ENCRYPT ใช้คู่กับ DES_DECRYPT
มาดูกันเลยดีกว่า
รูปแบบการใช้ คือ ENCODE(str,pass_str) , DECODE(crypt_str,pass_str)
เราต้องเริ่มจากเก็บข้อมูลงฐานข้อมูล
INSERT INTO tb_name set field1=ENCODE('Mindphp.com','K');
ถ้าเราจะดึงข้อมูลขึ้นมาแสดงผล (แบบที่อ่านข้อความนั้นได้)
SELECT DECODE(field1,'K') FROM tb_name
SELECT * FROM tb_name WHERE DECODE(field1,'K') LIKE 'Mindphp.com';
// โดยที่ K คือ key ที่ใช้เข้ารหัสควรเก็บไว้เป็นความลับ และจำไว้ด้วยนะครับ ไว้ใช้สำหรับถอดรหัสด้วย
ส่วนอีก function มีรูปแบบดังนี้
DES_ENCRYPT(str[,{key_num|key_str}]) ใช้ algorithm Triple-DES .
DES_DECRYPT(crypt_str[,key_str])
สอบถามปัญหาที่เว็บบอร์ด