Keccak SHA3 Hash Generator: คำนวณ SHA-3 และ Keccak-256 ของ Ethereum ในเบราว์เซอร์
คำนวณ hash แบบ SHA3-224/256/384/512 และ Keccak-256 (Ethereum) จากข้อความหรือไฟล์ได้ทั้งหมดในเบราว์เซอร์ของคุณ พร้อมเรียนรู้ว่า SHA-3 ต่างจาก Keccak ต้นฉบับอย่างไรและแต่ละแบบเหมาะกับงานแบบไหน
Table of Contents
Keccak SHA3 Hash Generator: คำนวณ SHA-3 และ Keccak-256 ของ Ethereum ในเบราว์เซอร์
Keccak-256 คือ hash function ที่ทำหน้าที่ปกป้องมูลค่าหลายล้านล้านดอลลาร์อย่างเงียบ ๆ ทุก transaction บน Ethereum ต้องเซ็นและอ้างอิง hash ตัวนี้, function selector ของ smart contract ทุกตัวมาจากมัน และที่อยู่แบบ checksummed ทุกที่อยู่ก็ฝังมันไว้ข้างใน แต่เครื่องมือ hash ออนไลน์ส่วนใหญ่กลับมีแต่ตระกูล SHA-2 เพราะเป็นแบบที่เครื่องมือทั่วไปให้มานานหลายปี พอถึงเวลาที่คุณต้องใช้ Keccak-256 เพื่อตรวจ selector, คำนวณ ENS namehash ซ้ำ หรือไล่หาสาเหตุที่ checksum ไม่ตรง เครื่องมือ SHA-256 ทั่วไปก็ช่วยคุณไม่ได้เลย
Keccak SHA3 Hash Generator ฟรีของเราปิดช่องว่างนี้ เครื่องมือนี้คำนวณได้ทั้ง SHA3-224, SHA3-256, SHA3-384 และ SHA3-512 — สี่ขนาดที่ NIST กำหนดมาตรฐาน — ควบคู่กับ Keccak ต้นฉบับ รวมถึง Keccak-256 ที่เป็น hash ตัวเดียวกับที่ Ethereum ใช้ แค่วางข้อความหรือวางไฟล์ ผลลัพธ์ทั้งหกแบบก็ปรากฏทันที ภายในทำงานด้วย permutation แบบ Keccak-f[1600] ที่เขียนด้วย JavaScript ล้วน ทุกอย่างจึงคำนวณในเบราว์เซอร์ของคุณ ไม่มีการส่งข้อมูลขึ้นเซิร์ฟเวอร์ และแม้ตัดอินเทอร์เน็ตก็ยังใช้งานได้ตามปกติ
จุดแข็งชุดนี้ตอบโจทย์สามกลุ่มผู้ใช้พร้อมกัน: นักพัฒนา web3 ที่ต้องการ Keccak-256 ระดับ Ethereum, วิศวกรที่ต้องตรวจ digest ของไฟล์ดาวน์โหลดและ build artifact และผู้เรียนที่อยากเห็น sponge construction ตอบสนองต่อการเปลี่ยนตัวอักษรเพียงตัวเดียว
ทำไมต้องใช้ Keccak SHA3 Hash Generator?
- ครบทั้งสองตระกูลในหน้าเดียว. ตั้งแต่ SHA3-224 ถึง SHA3-512 และ Keccak-256 แสดงผลรวมกันในมุมมองเดียว เปรียบเทียบกันได้ในไม่กี่วินาที
- Keccak-256 ตรงตามที่ Ethereum ใช้. ผลลัพธ์ตรงกับ keccak256() ใน Solidity, ethers.js และ web3.js เป๊ะ ๆ — เป็น padding แบบ Keccak ต้นฉบับ ไม่ใช่แบบ NIST ภายหลัง ซึ่งเป็นสาเหตุคลาสสิกของปัญหา selector และ checksum ไม่ตรง
- รองรับทั้งข้อความและไฟล์. พิมพ์ข้อความสั้น ๆ หรือวางไฟล์ firmware ขนาดหลายเมกะไบต์ก็ได้ โดย byte ของไฟล์จะถูกอ่านและ hash ในเครื่อง ไฟล์ไม่ต้องผ่านเครือข่ายเลย
- เอนจิน Keccak-f[1600] ล้วน JavaScript. ไม่มีการเรียกเซิร์ฟเวอร์ ไม่ต้องใช้ API key ไม่มีโควตา การ hash ทำงานในแท็บของคุณและใช้ได้แม้ออฟไลน์
- ครบทั้งสี่ขนาดของ SHA-3. SHA3-224, SHA3-256, SHA3-384 และ SHA3-512 คำนวณพร้อมกันในรอบเดียว เลือกความยาว digest ตามที่สเปกกำหนดได้ทันที
- ฟรีและไม่ต้องสมัครสมาชิก. ไม่มีบัญชี ไม่มีโควตาการใช้งาน ข้อมูลที่ละเอียดอ่อนยังอยู่บนเครื่องคุณตามดีไซน์
ฟีเจอร์หลัก
| ฟีเจอร์ | สิ่งที่ได้ |
|---|---|
| อัลกอริทึม | SHA3-224, SHA3-256, SHA3-384, SHA3-512, Keccak-256, Keccak-512 |
| โหมดอินพุต | พิมพ์หรือวางข้อความ, วางไฟล์หรือเลือกไฟล์จากเครื่อง |
| เอนจิน hash | sponge แบบ Keccak-f[1600] เขียนด้วย JavaScript ล้วน ใช้ padding ตามมาตรฐานของแต่ละแบบ |
| รองรับ Ethereum | Keccak-256 ตรงกับ keccak256() ใน Solidity และ ethers.js |
| รูปแบบผลลัพธ์ | hexadecimal ตัวพิมพ์เล็ก คัดลอก digest ได้ด้วยคลิกเดียว |
| ความเป็นส่วนตัว | 100% client-side อินพุตไม่ถูกอัปโหลดหรือบันทึก |
| โหมดออฟไลน์ | ใช้งานได้เต็มรูปแบบแม้ตัดการเชื่อมต่อเครือข่ายหลังโหลดหน้าแล้ว |
| ค่าใช้จ่าย | ฟรี ไม่จำกัด ไม่ต้องสมัครสมาชิก |
- การเปรียบเทียบครบหกแบบไม่ใช่ของตกแต่ง: เวลาไล่หาว่า digest ไม่ตรงกันเพราะอะไร การเห็นทุกแบบพร้อมกันมักทำให้รู้ภายในไม่กี่วินาทีว่าใครบางคนคำนวณ Keccak-256 ทั้งที่สเปกขอ SHA3-256 หรือกลับกัน
- โหมดไฟล์ hash จาก byte ดิบของไฟล์ — ไม่ใช่การแปลงเป็นข้อความ — ซึ่งเป็นวิธีเดียวที่ถูกต้องในการ fingerprint ไฟล์ binary และ archive
วิธีการใช้งาน
- เปิดเครื่องมือ. เข้าไปที่ Keccak SHA3 Hash Generator ไม่ต้องติดตั้งอะไร ไม่ต้องตั้งค่าใด ๆ ก่อน hash ครั้งแรก
- ใส่อินพุตในโหมดข้อความ. พิมพ์หรือวาง string ลงในช่อง input ผลลัพธ์ทั้งหกแบบจะอัปเดตตามที่คุณพิมพ์
- คัดลอก digest ที่ต้องการ. อ่านป้ายกำกับให้ดี: Keccak-256 กับ SHA3-256 ยาวเท่ากันที่ 256 บิต แต่เป็น hash ที่ต่างกัน ดังที่จะอธิบายด้านล่าง
- สลับไปโหมดไฟล์สำหรับไฟล์. วางหรือเลือกไฟล์จากเครื่องเพื่อได้ digest ทั้งหกแบบจากเนื้อหาไฟล์ เหมาะกับการตรวจไฟล์ดาวน์โหลด, build artifact หรือ firmware image
- ตรวจสอบผลลัพธ์กับที่อื่น. เทียบกับ test vector ที่รู้จักหรือผลลัพธ์จาก library ของคุณ — และถ้าต้องการความมั่นใจสูงสุด ลองตัดเน็ตแล้วคำนวณซ้ำ
SHA-3 กับ Keccak-256: ความต่างเล็ก ๆ ที่สำคัญ
จุดนี้ทำให้แม้แต่นักพัฒนาที่เก๋าก็สะดุด SHA-3 กับ Keccak-256 ใช้แกนกลางเดียวกันทุกประการ คือ permutation แบบ Keccak-f[1600] และ sponge construction ที่ดูดอินพุตเข้าไปแล้วบีบ digest ออกมา ต่างกันเพียงจุดเดียวคือ padding หนึ่ง byte ท้าย message เมื่อ NIST ยกระดับ Keccak เป็น SHA-3 ในปี 2015 ได้เปลี่ยน padding สำหรับแยกโดเมนจาก 0x01 (Keccak ต้นฉบับ) เป็น 0x06 (SHA-3 ฉบับสุดท้าย) byte เดียวนี้ไหลผ่าน permutation แล้วเปลี่ยนผลลัพธ์ไปทั้งหมด
ผลที่ตามมาพูดตรง ๆ ก็คือ Keccak-256 ของอินพุตใด ๆ ไม่เท่ากับ SHA3-256 ของอินพุตนั้น permutation เดียวกัน คนละ padding ผลลัพธ์ต่างกันสนิท — กับทุกอินพุต รวมถึง string ว่าง และไม่มีวิธีแปลงกลับไปมา
ทำไมเรื่องนี้ถึงสำคัญ? เพราะ Ethereum เลือกใช้ Keccak ต้นฉบับ ก่อนที่ NIST จะเปลี่ยน padding และไม่เคยเปลี่ยนตาม keccak256() ใน Solidity, การ checksum ที่อยู่แบบ EIP-55 และอัลกอริทึม ENS namehash ล้วนเป็น Keccak-256 ที่ใช้ padding 0x01 — ไม่ใช่ SHA3-256 library รุ่นเก่ายิ่งเพิ่มความงงด้วยการตั้งชื่อฟังก์ชันว่า sha3() ทั้งที่จริงคำนวณ Keccak-256 อีกทั้งความผิดพลาดนี้ยังเงียบ: คุณได้ hash ผิด ไม่ใช่ error
สี่ขนาดของ SHA-3 แลกความยาว digest กับความเร็ว: SHA3-224 ให้ 28 ไบต์ (rate 288 บิต), SHA3-256 ให้ 32 ไบต์ (rate 1088 บิต), SHA3-384 ให้ 48 ไบต์ (rate 832 บิต) และ SHA3-512 ให้ 64 ไบต์ (rate 576 บิต) ทั้งหมดผ่าน sponge เดียวกันต่างกันที่อัตราส่วน rate/capacity ส่วนโหมดไฟล์ใช้หลักการเดียวกันกับไฟล์ hash จากเนื้อหาแบบ byte ต่อ byte — bit เดียวที่พลิกไปทำให้ digest ทุกแบบเปลี่ยนไป
ลองด้วย test vector คลาสสิกของ NIST คือ abc ผลลัพธ์ที่ควรได้คือ:
- SHA3-224: e642824c3f8cf24ad09234ee7d3c766fc9a3a5168d0c94ad73b46fdf
- SHA3-256: 3a985da74fe225b2045c172d6bd390bd855f086e3e9d525b46bfe24511431532
- SHA3-384: ec01498288516fc926459f58e2c6ad8df9b473cb0fc08c2596da7cf0e49be4b298d88cea927ac7f539f1edf228376d25
- SHA3-512: b751850b1a57168a5693cd924b6b096e08f621827444f70d884f5d0240d2712e10e116e9192af3c91a7ec57647e3934057340b4cf408d5a56592f8274eec53f0
- Keccak-256: 4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45
กรณีการใช้งานจริง
งาน Ethereum และ Web3
คำนวณ Keccak-256 เพื่อ derive ABI function selector (สี่ไบต์แรกของ hash จาก signature อย่าง transfer(address,uint256)), คำนวณ checksum ที่อยู่แบบ EIP-55 หรือตรวจค่าระหว่างทางของ ENS namehash — โดยไม่ต้องเสียเวลาไล่หาว่าทำไม selector ถึงไม่ตรง
ตรวจสอบความถูกต้องของไฟล์
ก่อนรัน installer ที่ดาวน์โหลดมา deploy firmware หรือกู้คืนข้อมูลสำรอง ให้ hash ไฟล์ด้วยโหมดไฟล์แล้วเทียบ digest กับค่าที่ผู้ให้บริการหรือ CI pipeline ของคุณเผยแพร่ไว้
เทียบผลลัพธ์ระหว่าง library
เมื่อ js-sha3, hash-wasm, ethers.js, OpenSSL และ smart contract ของคุณให้ผลไม่ตรงกัน ให้วางอินพุตเดียวกันที่นี่แล้วเทียบ digest ทั้งหกแบบพร้อมกัน ถ้าตรงกับเครื่องมือนี้ แปลว่าฝั่งที่ไม่ตรงใช้แบบ hash ผิด
เรียนรู้ภายในของ hash function
พิมพ์ abc อ่าน digest เปลี่ยนตัวอักษรเดียวแล้วอ่านใหม่ — digest ทุกแบบเปลี่ยนไปหมดจดจำ ปรากฏการณ์ avalanche แบบนี้คือบทเรียนแรกที่จำได้นานเรื่องการทำงานของ sponge construction
แนวปฏิบัติที่แนะนำ
- ระบุชื่อแบบ hash ให้ชัดเจนในเอกสารและโค้ด. เขียนว่า "Keccak-256" หรือ "SHA3-256" ไม่ใช่ "sha3" ลอย ๆ เพราะชื่อกำกวมคือต้นเหตุของบั๊กเกี่ยวกับ Keccak ส่วนใหญ่
- ตรวจกับ test vector ที่รู้จักเสมอ. เก็บ digest ของ abc ด้านบนไว้ใช้ และสังเกตว่าแม้แต่ string ว่าง hash สองแบบก็ไม่เท่ากัน (a7ffc6f8... กับ c5d24601...) ซึ่งพิสูจน์ความต่างของ padding ได้ทันที
- ใช้โหมดไฟล์กับอินพุตขนาดใหญ่. วางไฟล์จริงดีกว่า copy-paste base64 เป็นเมกะไบต์ เพื่อให้ byte ดิบถูก hash ตรงตามที่เก็บไว้
- เทียบ digest แบบเต็ม ๆ ไม่ใช่แค่ต้น ๆ. การเทียบด้วยตาเพียงบางส่วนอาจมองข้ามความต่างท้าย ๆ ได้
- มองว่า hash คือความถูกต้องของข้อมูล ไม่ใช่การพิสูจน์ตัวตน. ใครก็คำนวณ hash ซ้ำได้ จึงควรใช้ signature หรือ keyed MAC เมื่อต้องการพิสูจน์แหล่งที่มา
บทสรุป
ไม่ว่าคุณจะกำลัง derive function selector, ตรวจ firmware image ก่อนส่งมอบ หรือสอนวิชาเรื่อง sponge construction Keccak SHA3 Hash Generator รวมทั้งหกแบบไว้ในหน้าจอเดียว คำนวณทุกอย่างในเครื่องคุณ และไม่มีค่าใช้จ่าย เปิดเครื่องมือ วางอินพุตหรือวางไฟล์ แล้วคัดลอก digest ได้อย่างมั่นใจ
เครื่องมือที่เกี่ยวข้องที่คุณอาจสนใจ:
- Hash Generator — hash คลาสสิกอย่าง MD5, SHA-1 และ SHA-2 สำหรับงาน checksum ทั่วไป
- File Hash Checker — ตรวจไฟล์ดาวน์โหลดกับ checksum ที่เผยแพร่ไว้ในไม่กี่คลิก
- Hash Type Identifier — วาง digest ที่ไม่รู้จักแล้วให้เครื่องมือช่วยบอกว่าน่าจะมาจากแบบไหน
ใช้ hash อย่างมั่นใจ ระบุชื่อแบบให้ชัดเจน และขอให้ digest ของคุณตรงกันตั้งแต่ครั้งแรก
คำถามที่พบบ่อย
ถ: Keccak-256 เหมือนกับ SHA3-256 หรือไม่?
ตอบ: ไม่เหมือน ทั้งคู่ใช้ permutation แบบ Keccak-f[1600] เหมือนกัน แต่ SHA-3 ใช้ padding 0x06 ส่วน Keccak ต้นฉบับใช้ 0x01 เนื่องจาก padding ถูกนำไป hash เป็นส่วนหนึ่งของ message สองฟังก์ชันนี้จึงให้ digest ต่างกันกับอินพุตเดียวกัน
ถ: Ethereum ใช้ hash แบบไหนกันแน่?
ตอบ: Keccak-256 ต้นฉบับที่ใช้ padding 0x01 ใช้ตั้งแต่ transaction hash, การ checksum ที่อยู่แบบ EIP-55, ABI function selector ไปจนถึงอัลกอริทึม ENS namehash
ถ: ข้อความและไฟล์ของฉันถูกอัปโหลดขึ้นเซิร์ฟเวอร์หรือไม่?
ตอบ: ไม่ เอนจิน JavaScript ล้วนทำงานทั้งหมดในเบราว์เซอร์ ข้อความและ byte ของไฟล์ถูกอ่านและ hash ในเครื่องโดยไม่ถูกส่งออกไปไหน
ถ: ทำไมผลจาก library ถึงไม่ตรงกับผลของเครื่องมือ?
ตอบ: สาเหตุที่พบบ่อยที่สุดคือใช้คนละแบบกัน เช่น library คำนวณ Keccak-256 แต่คุณเทียบกับ SHA3-256 หรือกลับกัน สาเหตุรองมาจากความต่างของ encoding เช่น hash จาก byte แบบ UTF-8 กับ hash จาก string แบบ hex