แฮช/การเข้ารหัส

PBKDF2 Hash + Verify

ได้คีย์จาก PBKDF2 (RFC 8018) โดยใช้รหัสผ่าน, HMAC-SHA1/256/384/512 พร้อมปรับจำนวนรอบได้


                    

PBKDF2 (RFC 8018) applies HMAC to a password and salt repeatedly to deliberately slow down computation — it's the oldest of the standardized algorithms for password hashing and encryption key derivation.

How to use it

Common uses

Things to keep in mind

Unlike bcrypt and Argon2, PBKDF2 isn't memory-hard — it only requires CPU time, so it's less resistant to attacks on GPUs with many parallel compute units.

The recommended iteration count rises over time in NIST and OWASP guidance as hardware gets faster — check against current recommendations periodically.

บทความเกี่ยวกับเครื่องมือนี้: PBKDF2: มาตรฐานการยืดคีย์ที่เก่าแก่ที่สุด

คำถามที่พบบ่อย

PBKDF2 ต่างจาก bcrypt หรือ Argon2 อย่างไรในการแฮชรหัสผ่าน?

PBKDF2 ใช้ฟังก์ชันแฮช HMAC ซ้ำ ๆ เพื่อทำให้บรูทฟอร์สช้าลง แต่ต่างจาก bcrypt หรือ Argon2 ตรงที่ไม่ต้องใช้หน่วยความจำมาก จึงเจาะด้วย GPU ได้ถูกกว่าเชิงเปรียบเทียบ มันยังใช้กันแพร่หลายและได้รับการรับรอง FIPS แต่ระบบใหม่มักนิยม Argon2 มากกว่า

จำนวนรอบควบคุมอะไร และควรตั้งสูงแค่ไหน?

จำนวนรอบกำหนดว่าแฮชพื้นฐานถูกใช้กี่ครั้ง โดยแลกความเร็วกับความทนทานต่อบรูทฟอร์สโดยตรง คำแนะนำปัจจุบันแนะนำหลายแสนรอบสำหรับ SHA-256 และควรเพิ่มขึ้นตามเวลาเมื่อฮาร์ดแวร์เร็วขึ้น

ทำไม PBKDF2 ถึงต้องมี salt?

Salt ช่วยให้รหัสผ่านที่เหมือนกันได้ผลลัพธ์ต่างกัน ป้องกันไม่ให้ผู้โจมตีใช้ตาราง rainbow ที่คำนวณไว้ล่วงหน้า และบังคับให้ต้องโจมตีแต่ละแฮชแยกกัน

ฟังก์ชันแฮชพื้นฐานที่ PBKDF2 ใช้มีความสำคัญหรือไม่?

สำคัญ การใช้งานแบบเก่ามักใช้ HMAC-SHA1 เป็นค่าเริ่มต้น — ในโครงสร้าง HMAC นี่ไม่ใช่ช่องโหว่ร้ายแรง แต่คำแนะนำสมัยใหม่ระบุชัดเจนให้ใช้ HMAC-SHA256 หรือแข็งแกร่งกว่าเพื่อระยะขอบความปลอดภัยที่มากกว่าโดยแทบไม่เสียความเร็ว

PBKDF2 ถูกใช้ที่ไหนอีกนอกจากการเก็บรหัสผ่าน?

PBKDF2 ถูกใช้อย่างแพร่หลายในการสร้างคีย์เข้ารหัสเชิงรหัสลับจากรหัสผ่าน — เช่น ใน WPA2/WPA3 สำหรับ Wi-Fi และในรูปแบบคอนเทนเนอร์ไฟล์เข้ารหัสจำนวนมาก

บทความ: แฮช/การเข้ารหัส

Hash Generator: MD5, SHA-1 และ SHA-256 ต่างกันอย่างไร

เหตุใด MD5 จึงยังใช้ตรวจสอบความถูกต้องของไฟล์ แต่ไม่ใช้กับรหัสผ่าน

Checksum Verifier: วิธีตรวจสอบว่าไฟล์ไม่เสียหาย

เหตุใด checksum ที่ตรงกันจึงยืนยันความถูกต้องของไฟล์ แต่ไม่ยืนยันว่าใครเป็นผู้สร้าง

HMAC: แฮชที่มีคีย์ต่างจากแฮชธรรมดาอย่างไร

เหตุใด SHA-256 ธรรมดาจึงไม่ป้องกันการปลอมแปลงข้อความ แต่ HMAC ป้องกันได้

Bcrypt: เหตุใดรหัสผ่านจึงถูกแฮชอย่างช้า ๆ ไม่ใช่เร็ว

เหตุใด SHA-256 ที่เร็วจึงเป็นตัวเลือกที่แย่สำหรับรหัสผ่าน และ bcrypt ที่ช้าจึงเป็นตัวเลือกที่ถูกต้อง

UUID: ตัวระบุที่แทบไม่เคยซ้ำกันถูกสร้างขึ้นอย่างไร

เหตุใด UUID v4 จึงสามารถสร้างแยกกันได้บนเครื่องนับล้านเครื่องโดยไม่มีความเสี่ยงชนกัน

Password Generator: อะไรที่ทำให้รหัสผ่านแข็งแกร่งจริง ๆ

เหตุใดรหัสผ่านยาวที่ประกอบจากคำในพจนานุกรมจึงแข็งแกร่งกว่ารหัสผ่านสั้นที่มีสัญลักษณ์และตัวเลข

AES: การเข้ารหัสแบบสมมาตรทำงานอย่างไร

เหตุใดคีย์เดียวกันจึงเข้ารหัสและถอดรหัสข้อมูลใน AES และสิ่งนี้ต่างจากการเข้ารหัสแบบอสมมาตรอย่างไร

Argon2: เหตุใดอัลกอริทึมนี้จึงชนะการแข่งขันแฮชรหัสผ่าน

Argon2 ป้องกันการโจมตีด้วย GPU ได้ดีกว่าอัลกอริทึมแฮชรหัสผ่านรุ่นเก่าอย่างไร

Scrypt: เหตุใดอัลกอริทึมนี้จึงต้องการหน่วยความจำมากขนาดนั้น

เหตุใด scrypt จึงต้องการหน่วยความจำมากโดยตั้งใจเพื่อให้การเดารหัสบนอุปกรณ์ ASIC ยากขึ้น

TOTP: รหัสใช้ครั้งเดียวในแอปยืนยันตัวตนทำงานอย่างไร

เหตุใดรหัสใน Google Authenticator จึงทำงานได้โดยไม่มีอินเทอร์เน็ตและซิงค์กับเซิร์ฟเวอร์ผ่านเวลาเท่านั้น

X.509: ภายในใบรับรอง SSL มีอะไรบ้าง

เบราว์เซอร์ตรวจสอบอะไรในใบรับรองของเว็บไซต์ก่อนแสดงกุญแจสีเขียว

PGP: การเข้ารหัสด้วยกุญแจสาธารณะและกุญแจส่วนตัวทำงานอย่างไร

เหตุใดจึงสามารถแชร์กุญแจสาธารณะ PGP ได้อย่างอิสระ แต่ห้ามแชร์กุญแจส่วนตัวเด็ดขาด