T

Text Machine

เครื่องมือข้อความทรงพลัง ในเบราว์เซอร์ของคุณ

เครื่องมือสร้างแฮช

สร้างไดเจสต์ MD5, SHA-1, SHA-256, SHA-384 และ SHA-512 จากข้อความใดก็ได้ ทุกอย่างทำงานในเบราว์เซอร์ของคุณ ดังนั้นข้อมูลที่ป้อนจะไม่ถูกอัปโหลด

ข้อความที่ป้อน

0 อักขระ

แฮช

ป้อนข้อความด้านบนเพื่อดูแฮช

วิธีใช้ เครื่องมือสร้างแฮช

  1. 1

    ป้อนข้อความของคุณ

    พิมพ์หรือวางข้อความใด ๆ ลงในแผงป้อนข้อมูล แฮชจะถูกคำนวณโดยอัตโนมัติจากไบต์ UTF-8 ของมัน

  2. 2

    อ่านทุกไดเจสต์

    ดูผลลัพธ์ MD5, SHA-1, SHA-256, SHA-384 และ SHA-512 พร้อมกัน โดยแต่ละค่าอัปเดตสด ๆ ขณะที่คุณพิมพ์

  3. 3

    เลือกอัลกอริทึมที่เหมาะสม

    เลือก SHA-256 ขึ้นไปสำหรับงานที่เกี่ยวกับความปลอดภัย และสงวน MD5 หรือ SHA-1 ไว้สำหรับ checksum ที่ไม่เกี่ยวกับความปลอดภัยและความเข้ากันได้กับระบบเดิม

  4. 4

    คัดลอกแฮช

    คลิก Copy ที่แถวใดก็ได้เพื่อนำไดเจสต์ฐานสิบหกนั้นไปยังคลิปบอร์ด ทั้งหมดนี้โดยไม่ต้องออกจากเบราว์เซอร์ของคุณ

อธิบายฟังก์ชันแฮช: ไดเจสต์ ความสมบูรณ์ และสิ่งที่ไม่ควรทำ

ฟังก์ชันแฮชทำอะไร

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

เครื่องมือนี้คำนวณไดเจสต์ห้าค่าจากข้อความเดียวกันในคราวเดียว ได้แก่ MD5, SHA-1, SHA-256, SHA-384 และ SHA-512 โดยใช้ Web Crypto API ในกรณีที่ใช้งานได้ การเห็นค่าทั้งหมดวางเรียงเคียงกันทำให้เห็นข้อแลกเปลี่ยนได้ชัดเจนเป็นรูปธรรม ฟังก์ชันรุ่นเก่านั้นสั้นกว่าและเร็วกว่า ส่วนตระกูล SHA-2 นั้นยาวกว่าและถูกสร้างขึ้นมาสำหรับงานด้านความปลอดภัย

ความเป็นเชิงกำหนดและปรากฏการณ์หิมะถล่ม

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

ทว่าการจับคู่นี้กลับไวต่อข้อมูลนำเข้าอย่างมหาศาล เปลี่ยนอักขระเพียงตัวเดียว แม้แต่สลับตัวพิมพ์เล็กพิมพ์ใหญ่ของตัวอักษรหนึ่งตัวหรือเพิ่มช่องว่างต่อท้าย ฟังก์ชันแฮชที่ดีก็จะสร้างไดเจสต์ที่แตกต่างไปโดยสิ้นเชิงและจำไม่ได้เลย โดยมีบิตของผลลัพธ์ราวครึ่งหนึ่งพลิกกลับ นี่คือปรากฏการณ์หิมะถล่ม (avalanche effect) และเป็นเหตุผลว่าทำไมไดเจสต์จึงใช้เดาว่าข้อมูลนำเข้าสองชุดคล้ายกันแค่ไหนไม่ได้เลย ข้อมูลนำเข้าที่แทบจะเหมือนกันกลับดูไม่เกี่ยวข้องกันโดยสิ้นเชิง ซึ่งนี่เป็นคุณสมบัติที่ตั้งใจ ไม่ใช่ข้อบกพร่อง

การใช้งานในชีวิตประจำวัน: ความสมบูรณ์และเช็กซัม

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

คุณสมบัติเดียวกันนี้ขับเคลื่อนการกำจัดข้อมูลซ้ำซ้อน (deduplication) และการตรวจจับการเปลี่ยนแปลง ระบบจัดเก็บข้อมูลแฮชบล็อกต่าง ๆ เพื่อหาข้อมูลซ้ำโดยไม่ต้องเปรียบเทียบกันทีละไบต์ ระบบควบคุมเวอร์ชันและแคชใช้แฮชของเนื้อหาเป็นตัวระบุ และเครื่องมือ build ก็แฮชข้อมูลนำเข้าเพื่อตัดสินว่างานใดข้ามไปได้ ในทุกกรณีเหล่านี้ แฮชทำหน้าที่เป็นลายนิ้วมือของเนื้อหาที่กระชับและเชื่อถือได้

การแฮชไม่ใช่การเข้ารหัส

ความสับสนนี้มีอยู่ทุกหนแห่งและมันสำคัญ การเข้ารหัสนั้นย้อนกลับได้ ด้วยกุญแจที่ถูกต้องคุณสามารถกู้ข้อความต้นฉบับกลับมาได้ เพราะจุดประสงค์ทั้งหมดคือการปกป้องข้อมูลที่คุณตั้งใจจะอ่านอีกครั้งในภายหลัง ส่วนการแฮชนั้นเป็นแบบทางเดียวโดยตั้งใจ ไม่มีกุญแจและไม่มีขั้นตอนถอดรหัส เพราะเป้าหมายคือลายนิ้วมือ ไม่ใช่สำเนาที่กู้คืนได้

ดังนั้นแฮชจึงไม่ใช่คำตอบสำหรับโจทย์ที่ว่าทำให้ข้อความนี้เป็นความลับแต่อ่านได้ในภายหลังเด็ดขาด หากคุณต้องการจัดเก็บบางสิ่งแล้วเรียกมันกลับคืนมา สิ่งที่คุณต้องใช้คือการเข้ารหัส แต่หากคุณเพียงต้องการตรวจสอบว่าข้อมูลนำเข้าในภายหลังตรงกับข้อมูลก่อนหน้าหรือไม่ โดยไม่ต้องเก็บต้นฉบับไว้เลย สิ่งที่คุณต้องใช้คือแฮช การเลือกใช้ผิดประเภทเป็นความผิดพลาดในการออกแบบที่ความแข็งแกร่งของอัลกอริทึมมากเพียงใดก็แก้ไม่ได้

MD5 และ SHA-1 พังแล้วสำหรับงานความปลอดภัย

MD5 และ SHA-1 ยังคงถูกคำนวณไว้ที่นี่เพราะยังมีประโยชน์สำหรับเช็กซัมที่ไม่เกี่ยวกับความปลอดภัย การทำงานร่วมกับระบบเก่า และการเทียบค่าที่สร้างโดยระบบรุ่นเก่า แต่ทั้งคู่พังแล้วในเชิงการเข้ารหัสลับ นักวิจัยได้สร้างการชน (collision) ขึ้นได้จริงในทางปฏิบัติ ซึ่งหมายถึงข้อมูลนำเข้าสองชุดที่ต่างกันแต่แฮชออกมาเป็นไดเจสต์เดียวกัน และสำหรับ SHA-1 เรื่องนี้ได้รับการสาธิตด้วยไฟล์จริงที่มีความหมายแล้ว การชนทำลายหลักประกันด้านความปลอดภัยที่ว่าไดเจสต์ระบุข้อมูลนำเข้าของมันได้อย่างไม่ซ้ำใคร

กฎในทางปฏิบัตินั้นเรียบง่าย อย่าใช้ MD5 หรือ SHA-1 ในที่ที่ผู้โจมตีอาจได้ประโยชน์จากการปลอมแปลงให้ค่าตรงกัน เช่น ลายเซ็นดิจิทัล ลายนิ้วมือใบรับรอง บันทึกที่ตรวจจับการแก้ไขได้ หรือตัวระบุที่ต้องกันการชน สำหรับสิ่งใดก็ตามที่อ่อนไหวต่อความปลอดภัย ให้เลือก SHA-256 หรือที่แข็งแกร่งกว่า เก็บฟังก์ชันรุ่นเก่าไว้ใช้สำหรับการตรวจสอบความสมบูรณ์แบบทั่ว ๆ ไปที่ไม่มีปฏิปักษ์อยู่ในภาพ

ทำไมการแฮชธรรมดาจึงผิดสำหรับรหัสผ่าน

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

การจัดเก็บรหัสผ่านที่ถูกต้องใช้ฟังก์ชันการอนุพันธ์กุญแจที่ช้า มีการเติมซอลต์ (salt) และถูกสร้างมาเพื่อการนี้โดยเฉพาะ ได้แก่ bcrypt, scrypt หรือ Argon2 ซึ่งการใช้ซอลต์ (salt) แบบสุ่มที่ไม่ซ้ำกันต่อผู้ใช้แต่ละคนจะเอาชนะตารางค้นหา (rainbow tables) และค่าต้นทุนที่จงใจตั้งไว้จะทำให้การเดาแบบลองทุกความเป็นไปได้มีราคาแพง ซอลต์ (salt) ก็คือข้อมูลสุ่มที่นำมาผสมกับรหัสผ่านก่อนการแฮช เพื่อให้รหัสผ่านที่เหมือนกันให้ค่าที่ถูกจัดเก็บต่างกัน จงใช้เครื่องมือนี้เพื่อทำความเข้าใจและตรวจสอบแฮช แต่อย่าใช้ไดเจสต์ SHA เปล่า ๆ ในการจัดเก็บข้อมูลรับรองตัวตน

การเข้ารหัสอักขระ รูปแบบผลลัพธ์ และความเป็นส่วนตัว

เนื่องจากแฮชทำงานกับไบต์ การเข้ารหัสอักขระของข้อความจึงต้องถูกกำหนดตายตัว มิฉะนั้นไดเจสต์จะไม่มีความหมายเมื่อข้ามไปใช้กับเครื่องมืออื่น เครื่องมือนี้เข้ารหัสข้อมูลนำเข้าของคุณเป็น UTF-8 ก่อนการแฮช ดังนั้นตัวอักษรที่มีเครื่องหมายกำกับเสียง อักษรที่ไม่ใช่ละติน และอีโมจิ จึงให้ไดเจสต์มาตรฐานที่ตรงกับการพัฒนาอื่น ๆ ที่อิงกับ UTF-8 ทั้งหมด หากไดเจสต์ที่คุณคำนวณจากที่อื่นไม่ตรงกัน สาเหตุที่พบบ่อยมักเป็นการเข้ารหัสอักขระที่ไม่ตรงกัน หรือมีอักขระขึ้นบรรทัดใหม่หลงต่อท้ายมา

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

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

เครื่องมือนี้สร้างอัลกอริทึมแฮชใดบ้าง
มันสร้างไดเจสต์ห้าแบบจากข้อมูลเดียวกันพร้อมกัน ได้แก่ MD5, SHA-1, SHA-256, SHA-384 และ SHA-512 โดยแต่ละค่าแสดงเป็นสตริงฐานสิบหกและอัปเดตสด ๆ ขณะที่คุณพิมพ์
ข้อมูลของฉันถูกส่งไปยังเซิร์ฟเวอร์หรือไม่
ไม่ แฮชทุกค่าถูกคำนวณในเครื่องในเบราว์เซอร์ของคุณด้วย JavaScript และ Web Crypto API ข้อความของคุณจึงไม่ออกจากอุปกรณ์ ทำให้ปลอดภัยสำหรับรหัสผ่าน โทเค็น และข้อมูลที่อ่อนไหวอื่น ๆ
ฉันควรใช้ MD5 หรือ SHA-256
MD5 และ SHA-1 ถูกเจาะได้ในเชิงการเข้ารหัสเพราะมีการชนกัน (collision) เกิดขึ้นจริง จึงควรหลีกเลี่ยงสำหรับรหัสผ่าน ลายเซ็น หรือการป้องกันการแก้ไข ใช้ SHA-256, SHA-384 หรือ SHA-512 สำหรับงานที่อ่อนไหวด้านความปลอดภัย ส่วน MD5 และ SHA-1 เหมาะกับ checksum ทั่วไปและระบบเดิมเท่านั้น
แฮชสามารถย้อนกลับเป็นข้อความต้นฉบับได้ไหม
ไม่ แฮชเชิงการเข้ารหัสเป็นฟังก์ชันทางเดียวและย้อนกลับทางคณิตศาสตร์ไม่ได้ ข้อมูลที่สั้นหรือพบบ่อยบางครั้งอาจถูกเดาด้วยการบรูตฟอร์ซหรือตารางค้นหา ซึ่งเป็นเหตุผลที่อัลกอริทึมอ่อนแอไม่ปลอดภัยสำหรับการเก็บรหัสผ่าน
มันรองรับ Unicode และอีโมจิอย่างถูกต้องไหม
ใช่ ข้อความของคุณถูกเข้ารหัสเป็น UTF-8 ก่อนการแฮช ตัวอักษรที่มีเครื่องหมายกำกับเสียง สคริปต์ที่ไม่ใช่ละติน และอีโมจิจึงให้ไดเจสต์มาตรฐานที่ทำงานร่วมกันได้ ซึ่งตรงกับเครื่องมืออื่นที่อิงตาม UTF-8

เครื่องมือที่เกี่ยวข้อง

ทำงานต่อด้วยเครื่องมือที่มีประโยชน์เหล่านี้

เครื่องมือแปลง HTML เป็นข้อความ

เครื่องมือจัดรูปแบบ JSON

เครื่องมือทดสอบ Regex

เครื่องมือถอดรหัส JWT

เครื่องมือสร้าง CSS Gradient

เครื่องมือสร้าง CSS Box Shadow