แนวทาง การเข้ารหัส รหัสผ่านในฐานข้อมูล อย่างง่าย ตอนที่ 1

เขียนเมื่อ 9 ปีก่อน โดย Ninenik Narkdee
เข้ารหัส md5

คำสั่ง การ กำหนด รูปแบบ ตัวอย่าง เทคนิค ลูกเล่น การประยุกต์ การใช้งาน เกี่ยวกับ เข้ารหัส md5

ดูแล้ว 9,274 ครั้ง


เนื้อหาบทความนี้ จะเป็นแนวทาง การเข้ารหัส รหัสผ่านในฐานข้อมูล
กรณีเรามีข้อมูลสมาชิกอยู่แล้ว แต่ไม่ได้ทำการเก็บรหัสผ่าน แบบเข้ารหัสตั้งแต่แรก
 
โดยจะใช้คำสั่ง php เข้ารหัส ดังนี้
 
 $gen_password=sha1(md5(md5("รหัสผ่านที่ยังไม่ได้เข้ารหัส")));
 
หรือใครจะใช้รูปแบบอื่นก็ได้ ดัดแปลงได้ตามต้องการ
 
มาดูตารางฐานข้อมูลสมาชิกที่ยังไม่ได้เข้ารหัสรหัสผ่าน 
* ฟิลด์ member_password ถ้ากำหนดขนาดความยาวของข้อมูลน้อย เช่น น้อยกว่า 20
ตัวอักษร ให้แก้ไขปรับความยาวเป็นประมาณ 80 เพื่อรองรับรหัสผ่านที่เข้ารหัสแล้ว
 
member_id member_name member_password member_fullname member_type
1 demo 123456 demo 1
2 user1 test user1 2
3 user2 'ssodao csoj,c user2 1
 
ให้เราเพิ่มฟิลด์เข้าไปในตาราง เพื่อเก็บค่ารหัสผ่านมาพักไว้ จัดการ ในที่นี้เเพิ่มเป็น temp_password
 
member_id member_name member_password member_fullname member_type temp_password
1 demo 123456 demo 1  
2 user1 test user1 2  
3 user2 'ssodao csoj,c user2 1  
 
จากนั้นใช้คำสั่ง sql ทำผ่าน phpmyadmin หรือผ่าน php ด้วยคำสั่ง sql เพื่อคัดลอก
รหัสผ่านจากฟิลด์หลัก member_password มาเก็บไว้ใน temp_password
เช่นใช้คำสั่ง
 
$q="
UPDATE tbl_member SET 
temp_password=member_password
WHERE temp_password=''
";
mysql_query($q);
 
จะได้ตาราง
 
member_id member_name member_password member_fullname member_type temp_password
1 demo 123456 demo 1 123456
2 user1 test user1 2 test
3 user2 'ssodao csoj,c user2 1 'ssodao csoj,c
 
 
ต่อไปจะใช้ php ดึงรายการมาทำการเข้ารหัส และอัพเดทเข้าไปในตารางอีกครั้ง
* หากมีข้อมูลจำนวนมาก เช่นสมาชิกหลายหมื่น ก็สามารถ ใช้ limit จัดการทีละไม่มากได้
การใช้คำสั่ง php
 
 
$q="
SELECT * FROM tbl_member 
WHERE member_password=temp_password 
AND temp_password!=''
";
$qr=mysql_query($q);
while($rs=mysql_fetch_array($qr)){
    $gen_password=sha1(md5(md5($rs['temp_password'])));
    @mysql_query("
    UPDATE tbl_member SET 
    member_password='".$gen_password."' 
    WHERE member_id='".$rs['member_id']."'
    ");
    echo $rs['member_password']."<br>";   
}
 
จะได้ตาราง
 
member_id member_name member_password member_fullname member_type temp_password
1 demo f122db007ed655921f98184e4302bba84990ff68 demo 1 123456
2 user1 c375f5ca90143176681418485aff1f157d64aa1c user1 2 test
3 user2 1a3bad4b6e9e11d830558d84f5a6ecf658982349 user2 1 'ssodao csoj,c
 
 
 
เมื่อทำเสร็จแล้ว ให้เราทดสอบการล็อกอิน โดยเราต้องปรับโค้ดการล็อกอินใหม่
เพื่อตรวจสอบค่าจากการเข้ารหัส หากทดสอบโอเคแล้ว ก็ให้ลบฟิลด์รหัสผ่านเชื่อคราว
ในที่นี้ชื่อ temp_password ออกไปด้วย 
 
ตารางจะได้เป็น
 
member_id member_name member_password member_fullname member_type
1 demo f122db007ed655921f98184e4302bba84990ff68 demo 1
2 user1 c375f5ca90143176681418485aff1f157d64aa1c user1 2
3 user2 1a3bad4b6e9e11d830558d84f5a6ecf658982349 user2 1
 
 
เรามาดูการตรวจสอบการล็อกอินที่จะต้องปรับ
 
if(isset($_POST['login']) && $_POST['login']!=""){
    $chk_password=sha1(md5(md5(stripslashes($_POST['password']))));
    // เข้ารหัส รหัสผ่านที่เราเข้ามาตรวจสอบ แล้วใช้ตัวแปรนี้ไปเช็คใน ตารางฐานข้อมูล
    $q="
    SELECT * FROM tbl_member WHERE 
    member_name='".$_POST['username']."' 
    AND member_password='".$chk_password."'
    AND member_type='1' LIMIT 1 
    ";
    $qr=mysql_query($q);
    if($qr && mysql_num_rows($qr)>0){
        $rs=mysql_fetch_array($qr);
        echo $rs['member_name']."<br>";   
    }else{
        echo "No";
    }
}
 
 
เช่นเดียวกันกับหน้าสมัครสมาชิก ให้รับปรับค่ารหัสผ่าน แบบเข้ารหัส ก่อนบันทึก
โดยอาจจะใช้คำสั่ง 

$gen_password=sha1(md5(md5(stripslashes($_POST['password']))));
// รับค่ารหัสผ่านที่กรอกเข้ามา เข้ารหัสก่อน แล้วเอาตัวแปรนี้ไปบันทึกลงฐานข้อมูล




 
 


กด Like หรือ Share เป็นกำลังใจ ให้มีบทความใหม่ๆ เรื่อยๆ น่ะครับ








เนื้อหาพิเศษ เฉพาะสำหรับสมาชิก

กรุณาล็อกอิน เพื่ออ่านเนื้อหาบทความ

ยังไม่เป็นสมาชิก

สมาชิกล็อกอิน



( หรือ เข้าใช้งานผ่าน Social Login )




URL สำหรับอ้างอิง





คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )







เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ