ฉันอยากรู้ว่ามีวิธีใดบ้างที่เราสามารถสร้างแฮชฮาร์ดแวร์ที่เป็นเอกลักษณ์ของเครื่องเฉพาะได้ hash ควรไม่ซ้ำกันกับเครื่องและ hash ควรแตกต่างกันแม้ว่าเครื่องทั้งสองจะมีการกำหนดค่าเดียวกัน เป็นไปได้ไหม?
ฉันอยากรู้ว่ามีวิธีใดบ้างที่เราสามารถสร้างแฮชฮาร์ดแวร์ที่เป็นเอกลักษณ์ของเครื่องเฉพาะได้ hash ควรไม่ซ้ำกันกับเครื่องและ hash ควรแตกต่างกันแม้ว่าเครื่องทั้งสองจะมีการกำหนดค่าเดียวกัน เป็นไปได้ไหม?
คำตอบ:
คุณสามารถใช้ที่อยู่ MAC ของeth0
(สมมติว่ามีอยู่ในแต่ละเครื่อง) คุณสามารถทำได้ด้วยตัวเอง (อาจมีวิธีที่ง่ายกว่า) ด้วยวิธีนี้:
ifconfig eth0 | grep HWaddr | awk '{ print $NF}' | sed 's/://g'
6cf04954aaaa
ที่จะให้สิ่งที่ต้องการ
สิ่งเหล่านี้ควรจะไม่เหมือนใคร แต่ก็ไม่เสมอไป หากฮาร์ดแวร์เครือข่ายของคุณมาจากผู้ผลิตรายเดียวกันคุณอาจพบว่ามีครอสโอเวอร์บางส่วนดังนั้นควรระมัดระวังด้วย
ความล้มเหลวนั้นคุณสามารถสร้างสตริงที่ไม่ซ้ำกันของคุณและเก็บไว้ใน/etc/computer-id
(หรือเส้นทางอื่นที่คุณเลือก)
uuidgen -r
จะสร้างสิ่งที่สุ่มที่สุดเท่าที่จะทำได้เช่น: 52a85807-35fe-409e-8983-87eb58c02ece
uuidgen -t
ใช้เวลาและeth0
MAC ของการทำสิ่งที่ชอบ:eb8280dc-b5ec-11e0-90dd-6cf04954aaaa
ทั้งสองมีความเป็นเอกลักษณ์ แต่พอ ๆ กับการสุ่มอะไรก็มีความเป็นไปได้ของการปะทะกันอยู่เสมอ เก็บรายการส่วนกลางเพื่อหลีกเลี่ยงปัญหาเช่นนี้
ทางออกที่ง่ายที่สุดที่ฉันคิดได้คือ:
sudo dmidecode -s system-uuid
ตามหน้าคู่มือของdmidecode
ข้อมูลนี้จะถูกเรียกคืนจาก Desktop Management Interface ซึ่งมีส่วนเกี่ยวข้องกับ BIOS มันไม่สามารถเปลี่ยนแปลงได้
ฉันทดสอบคำสั่งนี้บนเครื่องสองเครื่องที่มีฮาร์ดแวร์เดียวกันและผลลัพธ์ต่างจากที่คาดไว้จากชื่อsystem-uuid
ดังนั้นจึงสามารถใช้เป็นแฮชฮาร์ดแวร์ที่ไม่ซ้ำกันได้
00000000-0000-0000-0000-6CF04954AAAA
(ศูนย์จำนวนมากตามด้วยที่อยู่ MAC ของฉัน) ฉันแน่ใจว่าผู้ผลิตบางรายทำสิ่งนี้ได้ดีกว่า แต่ Gigabyte ดูเหมือนจะโง่เง่าตลอดเวลา หากพวกเขาทำสิ่งนี้กับเมนบอร์ดทั้งหมดมีเพียง 17 ล้านชุดเท่านั้นและฉันสามารถทำได้ แต่รับประกันได้ว่าพวกเขาทำมาเธอร์บอร์ดมากกว่านั้น - จะมีการปะทะกันที่ไหนสักแห่ง
12345678-ABCD-0000-0000-000000000000
(MAC ตามด้วยศูนย์)
system-uuid
ใด ๆ