คำถามติดแท็ก hash

4
ทำไมจึงเป็นการดีที่สุดที่จะใช้หมายเลขเฉพาะเป็น mod ในฟังก์ชัน hashing
ถ้าฉันมีรายการของค่าคีย์จาก 1 ถึง 100 และฉันต้องการจัดระเบียบพวกเขาในอาร์เรย์ 11 ถังฉันได้รับการสอนให้สร้างฟังก์ชั่น mod H=kmod 11H=kmod 11 H = k \bmod \ 11 ตอนนี้ค่าทั้งหมดจะถูกวางทีละแถวใน 9 แถว ยกตัวอย่างเช่นในถังแรกจะมี0,11,22…0,11,22…0, 11, 22 \dots\ ในวินาทีจะมี1,12,23…1,12,23…1, 12, 23 \dotsเป็นต้น สมมติว่าฉันตัดสินใจที่จะเป็นเด็กเลวและใช้ฟังก์ชั่นที่ไม่เฉพาะเจาะจงเป็นฟังก์ชัน hashing ของฉัน - ใช้เวลา 12 ใช้ฟังก์ชั่น Hashing H=kmod 12H=kmod 12 H = k \bmod \ 12 จะส่งผลให้ตารางแฮชที่มีค่า0,12,24…0,12,24…0, 12, 24 \dots ในที่ฝากข้อมูลแรก, …

5
มีตัวกรอง anti-Bloom หรือไม่?
กรองบลูมทำให้มันเป็นไปได้อย่างมีประสิทธิภาพติดตามว่าค่าต่างๆได้รับการได้พบระหว่างการประมวลผล เมื่อมีรายการข้อมูลจำนวนมากตัวกรอง Bloom จะส่งผลให้มีการบันทึกหน่วยความจำที่สำคัญบนตารางแฮช คุณสมบัติหลักของตัวกรอง Bloom ซึ่งใช้ร่วมกับตารางแฮชคือมันมักจะพูดว่า "ไม่ใหม่" หากรายการนั้นไม่ใหม่ แต่มีความน่าจะเป็นที่ไม่เป็นศูนย์ที่รายการจะถูกตั้งค่าสถานะเป็น "ไม่ใหม่ "แม้ว่ามันจะเป็นของใหม่ มี "ฟิลเตอร์ต่อต้านบลูม" ซึ่งมีพฤติกรรมตรงกันข้ามหรือไม่? กล่าวอีกนัยหนึ่ง: มีโครงสร้างข้อมูลที่มีประสิทธิภาพซึ่งระบุว่า "ใหม่" หากรายการนั้นเป็นของใหม่ แต่อาจจะพูดว่า "ใหม่" สำหรับบางรายการที่ไม่ใช่ของใหม่ การเก็บรายการที่เห็นก่อนหน้านี้ทั้งหมด (ตัวอย่างเช่นในรายการลิงก์ที่เรียงลำดับ) เป็นไปตามข้อกำหนดแรก แต่อาจใช้หน่วยความจำมาก ฉันหวังว่ามันจะไม่จำเป็นเช่นกันเนื่องจากข้อกำหนดที่สองที่ผ่อนคลาย สำหรับผู้ที่ต้องการการรักษาที่เป็นทางการมากขึ้นให้เขียนถ้าตัวกรอง Bloom คิดว่าเป็นของใหม่,มิฉะนั้นและเขียนถ้าเป็นจริงและมิฉะนั้นx b ( x ) = 0 n ( x ) = 1 x n ( x ) = 0b ( …

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

2
ฟังก์ชั่นที่กระจายอินพุต
ฉันต้องการทราบว่ามีฟังก์ชันจากหมายเลข n-bit ไปยังหมายเลข n-bit ที่มีคุณสมบัติดังต่อไปนี้หรือไม่:fff fffควรเป็น bijective ทั้งและน่าจะคำนวณได้อย่างรวดเร็วffff−1f−1f^{-1} fffควรคืนค่าตัวเลขที่ไม่มีความสัมพันธ์อย่างมีนัยสำคัญกับอินพุต เหตุผลคือ: ฉันต้องการเขียนโปรแกรมที่ทำงานกับข้อมูล ข้อมูลบางส่วนของข้อมูลจะถูกเก็บไว้ในแผนผังการค้นหาแบบไบนารี่โดยที่คีย์การค้นหาเป็นสัญลักษณ์ของตัวอักษร เมื่อเวลาผ่านไปฉันจะเพิ่มสัญลักษณ์เพิ่มเติมให้กับตัวอักษร สัญลักษณ์ใหม่จะได้รับหมายเลขฟรีต่อไป ดังนั้นต้นไม้จะมีอคติเล็ก ๆ น้อย ๆ กับคีย์ที่เล็กกว่าซึ่งทำให้เกิดการปรับสมดุลมากกว่าที่ฉันคิดว่าควรจะต้องการ ความคิดของฉันคือการฉีกตัวเลขสัญลักษณ์ที่มีเช่นที่พวกเขามีการแพร่กระจายอย่างกว้างขวางไปทั่วทั้งช่วงของ-1] เนื่องจากหมายเลขสัญลักษณ์มีความสำคัญเฉพาะในระหว่างอินพุตและเอาต์พุตที่เกิดขึ้นเพียงครั้งเดียวการใช้ฟังก์ชันดังกล่าวจึงไม่ควรแพงเกินไปfff[0,264−1][0,264−1][0,2^{64}-1] ฉันคิดเกี่ยวกับการวนซ้ำของตัวสร้างตัวเลขสุ่ม Xorshift หนึ่งครั้ง แต่ฉันไม่รู้วิธีการยกเลิกมันจริงๆแม้ว่ามันจะเป็นไปได้ในทางทฤษฎี ใครรู้ฟังก์ชั่นดังกล่าวหรือไม่? นี่เป็นความคิดที่ดีหรือไม่?

3
เหตุใดการค้นหา hashtable (ไม่ชน) จึงเป็นจริง O (1)
คำเตือน: ฉันรู้ว่ามีคำถามที่คล้ายกันทำให้เกิดเสียงที่นี่แล้วและใน Stackoverflow แต่พวกเขาทั้งหมดเกี่ยวกับการชนซึ่งไม่ใช่สิ่งที่ฉันขอ คำถามของฉันคือทำไมการค้นหาน้อยกว่าO(1)ในตอนแรก? สมมติว่าฉันมี hashtable นี้: Hash Content ------------- ghdjg Data1 hgdzs Data2 eruit Data3 xcnvb Data4 mkwer Data5 rtzww Data6 ตอนนี้ฉันกำลังมองหากุญแจสำคัญในการkที่ฟังก์ชั่นกัญชาให้h(k) h(k) = mkwerแต่การค้นหา "รู้" ว่าแฮชmkwerอยู่ที่อันดับ 5 อย่างไร เหตุใดจึงไม่ต้องเลื่อนผ่านปุ่มทั้งหมดO(n)เพื่อค้นหา แฮชไม่สามารถใช้ที่อยู่ฮาร์ดแวร์บางประเภทได้เพราะฉันสูญเสียความสามารถในการย้ายข้อมูล และเท่าที่ฉันรู้ hashtable ไม่ได้ถูกจัดเรียงไว้บนแฮช (แม้ว่าจะเป็นแล้วการค้นหาก็ต้องใช้O(log n))? การรู้จักแฮชช่วยค้นหาสถานที่ที่ถูกต้องในตารางได้อย่างไร

2
ฟังก์ชัน hashing อ่อนแอสำหรับที่อยู่ IPv6 ที่น่าจดจำ
ที่อยู่ IPv6 ในรูปแบบของ862A:7373:3386:BF1F:8D77:D3D2:220F:D7E0การจดจำหรือถอดความได้ยากกว่า IPv4 4 แห่ง มีได้ รับการพยายามที่จะลดความรุนแรงนี้ทำให้อยู่ IPv6 อย่างใดน่าจดจำมากขึ้น มีฟังก์ชั่นการแฮชที่อ่อนแอโดยเจตนาซึ่งสามารถย้อนกลับเพื่อค้นหาว่าวลีนั้นพูดว่า"นี่ค่อนข้างอ่อนโยนและง่ายต่อการสังเกตถ้าวลีนั้นงอเพื่อไม่คุ้มค่าที่จะจ่าย"จะไปยังที่อยู่ IPv6 เป้าหมายหรือไม่ แน่นอนว่าแฮชจะมีอินพุตการชนจำนวนมากให้เลือกและประโยคที่น่าจดจำยิ่งกว่าเช่นวลีตัวอย่างนี้สามารถเสนอให้โดยอัตโนมัติ ฉันเดาว่ามีสองส่วน: อันดับแรกแฮชที่อ่อนแอด้วยการกระจายที่ดีในทั้งสองทิศทาง ประการที่สองคืออัลกอริทึมสำหรับการเลือกวลีที่น่าจดจำจากหลายชน (สั้นประกอบด้วยคำจากภาษาที่ระบุบางทีแม้ตามไวยากรณ์ง่าย) แม้ว่าฟังก์ชั่นแฮชจะต้องอ่อนแอ แต่ฉันไม่สงสัยเลยว่าความพยายามยังคงมีความสำคัญ - อย่างไรก็ตามเมื่อรู้วลีแล้วการคำนวณแฮชไปยังที่อยู่เป้าหมายนั้นรวดเร็วมาก แก้ไข ฉันพบแนวคิดที่เกี่ยวข้องนี้Piphilologyสำหรับการจดจำตัวเลขบางส่วนของπ: ฉันต้องการเครื่องดื่มแอลกอฮอล์แน่นอนหลังจากการบรรยายอย่างหนักเกี่ยวกับกลไกควอนตัม!

1
โจมตีฟังก์ชั่นแฮชที่ไม่ตอบสนองคุณสมบัติทางเดียว
ฉันกำลังทบทวนหลักสูตรความปลอดภัยของคอมพิวเตอร์และฉันติดคำถามหนึ่งในคำถามที่ผ่านมา นี่ไง: อลิซ (AAA) ต้องการส่งข้อความสั้น ๆ MMM ถึงบ๊อบBBB) ใช้ความลับร่วมกัน SabSabS_{ab}เพื่อตรวจสอบว่าข้อความมาจากเธอ เธอเสนอที่จะส่งข้อความเดียวที่มีสองชิ้น: A→B:M,h(M∥Sab)A→B:M,h(M∥Sab) A \to B: \quad M, h(M \mathbin\parallel S_{ab}) ที่ไหน hhh เป็นฟังก์ชันแฮชและ ∥∥\parallel หมายถึงการต่อกัน อธิบายอย่างรอบคอบว่าบ็อบทำอะไรเพื่อตรวจสอบว่าข้อความมาจากอลิซและทำไม (นอกเหนือจากคุณสมบัติของ hhh) เขาอาจเชื่อในสิ่งนี้ สมมติว่า hhhไม่ตรงตามคุณสมบัติทางเดียวและเป็นไปได้ที่จะสร้างภาพล่วงหน้า อธิบายว่าผู้โจมตีสามารถทำอะไรได้บ้าง หากการสร้างภาพล่วงหน้าใช้เวลาค่อนข้างนานแนะนำให้ใช้มาตรการตอบโต้ง่ายๆเพื่อปรับปรุงโปรโตคอลโดยไม่เปลี่ยนแปลง hhh. ฉันคิดว่าฉันรู้คนแรก บ๊อบต้องใช้แฮชของข้อความที่ได้รับพร้อมกับรหัสแชร์ของเขาและเปรียบเทียบแฮชนั้นกับแฮชที่ได้รับจากอลิซถ้าตรงกันพวกเขาควรพิสูจน์ว่าอลิซส่งมา ฉันไม่แน่ใจเกี่ยวกับคำถามสองข้อที่สอง สำหรับคำตอบที่สองคำตอบคือผู้โจมตีสามารถได้รับข้อความดั้งเดิมเมื่อมีการแฮชหรือไม่? ฉันไม่แน่ใจว่าจะทำอย่างไร
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.