[Java] Encrypt MD5 ภาษา Java
วันนี้จะมาแบ่งปันวิธีการเข้ารหัสผ่านแบบ MD5 ซึ่งเป็นการเข้ารหัสที่นิยมกันนะครับ แต่ก็ไม่ได้หมายความว่าจะปลอดภัยที่สุดนะครับ ทำให้หลายๆที่ต้องมีการเพิ่ม key เข้าไป หรือ encryption ซ้ำอีกก็แล้วแต่นะครับ ในตัวอย่างที่ยกมานี้เป็นการเข้ารหัสแบบ MD5 ปกตินะครับ
การแปลงรหัสผ่านก่อนการ query ลง databases ก็เป็นวิธีการเพิ่มความปลอดภัยให้กับ Account ของ user ในเว็บไซต์ของเราครับ
มาถึงในส่วน source code นะครับ
ก่อนอื่นก็ต้อง import package มาก่อนครับ
ในตอนนี้ จะมีการนำตัวแปร String password ดั้งเดิมมาแปลงเป็น MD5 นะครับ
Message Digest Algorithm หรืออีกชื่อนึงคือ Hash algorithm
การเข้ารหัสแบบนี้เรียกว่า one-way encryption คือเข้าได้ถอดไม่ได้ ดังนั้นการเช็คพาสเวิร์ดก็จะเป็นการ match ระหว่าง 2 string ที่แปลงเป็น MD5 ทั้งที่ user กรอกมา และที่มีอยู่ในฐานข้อมูลว่าตรงกันไหมทุกๆ byte เลยครับ ถ้าตรงก็แสดงว่าถูกต้อง
ถ้าถามว่า เมื่อเป็น one-way encryption แล้ว ทำไมยังมีเว็บถอดรหัสที่เอา MD5 ไปแปะแล้วจะได้รหัสดั้งเดิมมา?
เท่าที่รู้มานะครับ คือ เว็บพวกนี้จะมีการคำนวณ MD5 ไว้แล้วเก็บลง databases ครับ เมื่อมีผู้ใช้ต้องการ decryption ก็จะมากรอกข้อมูล แต่ระบบไม่ได้มีการถอดรหัสจริงๆครับ เป็นการ query database มากกว่า
ที่มา:
http://www.narisa.com/forums/index.php?showtopic=29150
http://www.thaiseoboard.com/index.php?topic=7417.0;all
การแปลงรหัสผ่านก่อนการ query ลง databases ก็เป็นวิธีการเพิ่มความปลอดภัยให้กับ Account ของ user ในเว็บไซต์ของเราครับ
มาถึงในส่วน source code นะครับ
ก่อนอื่นก็ต้อง import package มาก่อนครับ
import java.security.MessageDigest;
ในตอนนี้ จะมีการนำตัวแปร String password ดั้งเดิมมาแปลงเป็น MD5 นะครับ
//Encrypt Password to MD5 MessageDigest algorithm = MessageDigest.getInstance("MD5"); algorithm.reset(); algorithm.update(password.getBytes()); byte[] md5 = algorithm.digest(); StringBuilder hexString = new StringBuilder(); for (int i=0;i < md5.length;i++) { String hex = Integer.toHexString(0xFF & md5[i]); if(hex.length()==1) hexString.append('0'); hexString.append(hex); } password = hexString.toString();สังเกตว่าจะมีการใช้ Class MessageDigest มันคืออะไร ลองอ่านดูนะครับ
Message Digest Algorithm หรืออีกชื่อนึงคือ Hash algorithm
การเข้ารหัสแบบนี้เรียกว่า one-way encryption คือเข้าได้ถอดไม่ได้ ดังนั้นการเช็คพาสเวิร์ดก็จะเป็นการ match ระหว่าง 2 string ที่แปลงเป็น MD5 ทั้งที่ user กรอกมา และที่มีอยู่ในฐานข้อมูลว่าตรงกันไหมทุกๆ byte เลยครับ ถ้าตรงก็แสดงว่าถูกต้อง
ถ้าถามว่า เมื่อเป็น one-way encryption แล้ว ทำไมยังมีเว็บถอดรหัสที่เอา MD5 ไปแปะแล้วจะได้รหัสดั้งเดิมมา?
เท่าที่รู้มานะครับ คือ เว็บพวกนี้จะมีการคำนวณ MD5 ไว้แล้วเก็บลง databases ครับ เมื่อมีผู้ใช้ต้องการ decryption ก็จะมากรอกข้อมูล แต่ระบบไม่ได้มีการถอดรหัสจริงๆครับ เป็นการ query database มากกว่า
ที่มา:
http://www.narisa.com/forums/index.php?showtopic=29150
http://www.thaiseoboard.com/index.php?topic=7417.0;all