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

4
มีฟังก์ชันแฮชสำหรับคอลเลกชัน (เช่นชุดหลายชุด) ของจำนวนเต็มที่มีการค้ำประกันทางทฤษฎีที่ดีหรือไม่?
ฉันอยากรู้ว่ามีวิธีเก็บแฮชของจำนวนเต็มหลายชุดที่มีคุณสมบัติดังต่อไปนี้หรือไม่: มันใช้พื้นที่ O (1) สามารถอัปเดตให้สะท้อนถึงการแทรกหรือการลบในเวลา O (1) คอลเลคชั่นที่เหมือนกันสองชุด (เช่นคอลเลกชันที่มีองค์ประกอบเดียวกันที่มีหลายหลากเท่ากัน) ควรแฮชไปที่ค่าเดียวกันเสมอและคอลเลกชันที่แตกต่างกันสองชุดควรแฮชกับค่าที่แตกต่างกัน หนึ่งความพยายามครั้งแรกในที่นี้คือการจัดเก็บโมดูโลผลิตภัณฑ์แบบสุ่มนายกรัฐมนตรีของแฮชขององค์ประกอบแต่ละรายการ สิ่งนี้ตรงกับที่ 1 และ 2 แต่ไม่ชัดเจนว่ามันหรือการเปลี่ยนแปลงที่ใกล้เคียงจะตอบสนอง 3 ฉันเดิมโพสต์เกี่ยวกับเรื่องนี้StackOverflow * คุณสมบัติที่ 1 และ 2 อาจผ่อนคลายเล็กน้อยเพื่อพูด O (log n) หรือพหุนามย่อยขนาดเล็ก ประเด็นคือเพื่อดูว่าเราสามารถระบุหลายชุดและทดสอบความเท่าเทียมกันอย่างน่าเชื่อถือได้หรือไม่โดยไม่ต้องจัดเก็บองค์ประกอบเอง

3
อะไรคือความแตกต่างระหว่างการโจมตีครั้งที่สองกับการโจมตีของการปะทะ
Wikipedia กำหนดโจมตี preimageที่สองเป็น: ได้รับข้อความคงที่ m1 ค้นหาข้อความที่แตกต่าง m2 เช่น hash (m2) = hash (m1) Wikipedia กำหนดโจมตีการชนกันของ : ค้นหาข้อความที่แตกต่างกันสองข้อความ m1 และ m2 ซึ่งแฮช (m1) = hash (m2) ข้อแตกต่างเดียวที่ฉันเห็นคือในการโจมตี preimage ครั้งที่สอง m1 มีอยู่แล้วและเป็นที่รู้จักของผู้โจมตี อย่างไรก็ตามนั่นไม่ได้ทำให้ฉันมีความสำคัญ - เป้าหมายสุดท้ายยังคงค้นหาข้อความสองข้อความที่สร้างแฮชเดียวกัน อะไรคือความแตกต่างที่สำคัญในการโจมตี preimage ครั้งที่สองและการชนกันของข้อมูล ผลลัพธ์ต่างกันอย่างไร (นอกเหนือจากกันฉันไม่สามารถติดแท็กคำถามนี้ได้อย่างถูกต้องฉันพยายามใช้แท็ก "การเข้ารหัสล่วงหน้าก่อนการรักษาความปลอดภัยการเข้ารหัสภาพ" แต่ฉันมีชื่อเสียงไม่เพียงพอใครบางคนสามารถใช้แท็กที่เหมาะสมได้หรือไม่)

1
เหตุใดจึงสำคัญที่ความลับสิ้นสุดเมื่อลงชื่อกับ MD5
บ่อยครั้งที่มีการกล่าวว่าเมื่อใช้อัลกอริทึม MD5 ในการลงนามข้อมูลโดยพลการความลับที่ใช้ร่วมกันจะต้องมีในตอนท้าย ทำไม?

1
แฮชตัวกรองของ Bloom: มากกว่าหรือใหญ่กว่า?
ในการใช้ตัวกรอง Bloom วิธีการดั้งเดิมเรียกใช้ฟังก์ชันแฮชอิสระหลายตัว Kirsch และ Mitzenmacherแสดงให้เห็นว่าคุณต้องการเพียงสองจริง ๆ เท่านั้นและสามารถสร้างส่วนที่เหลือเป็นชุดเชิงเส้นของมัน คำถามของฉันคืออะไรจริง ๆ แล้วอะไรคือความแตกต่างระหว่างฟังก์ชันแฮชสองอันกับอันที่สองมีเอนโทรปี สิ่งนี้มาจากการดูสิ่งที่คุณทำกับผลลัพธ์ของฟังก์ชันแฮช: คุณจะใช้ค่าแฮชแบบ 64 บิตและปรับให้เท่าขนาดของเวกเตอร์บิตซึ่งอาจเล็กกว่า 2 อย่างมาก64 . นี่เป็นการเปลี่ยนแปลงที่ทำให้สูญเสียเอนโทรปีอย่างชัดเจน (ยกเว้นในกรณีที่ขนาดแฮชและความจุของตัวกรองของคุณไม่ตรงกัน) สมมติว่าตัวกรองของฉันมีรายการน้อยกว่า 2 32สิ่งที่จะหยุดฉันจากการแยกค่าแฮช 64- บิตของฉันเป็นสองแฮช 32- บิตสองและการรวมกันเชิงเส้นของเหล่านั้น หรือใช้เพื่อหว่าน PRNG กล่าวอีกนัยหนึ่งฉันต้องทราบข้อมูลจริงเพียงใดเกี่ยวกับองค์ประกอบที่ฉันแทรกลงในตัวกรองแต่ละชุดของ Bloom เพื่อให้แน่ใจว่ามีอัตราบวกเป็นเท็จมาตรฐาน หรือโดยทั่วไปความสัมพันธ์ระหว่างว่าฉันสามารถแยกแยะองค์ประกอบต่าง ๆ ได้ดีเพียงใด (ฉันใช้เพื่ออธิบายองค์ประกอบเหล่านี้กี่บิต) กับตัวกรอง Bloom ของฉันทำงานอย่างไร ดูเหมือนว่าฉันจะไปได้ด้วยบิตสำหรับขนาดฟิลเตอร์ของmหรือเท่ากับ2 ( lg ( - n ln p ) - 2 …

1
การนำฟังก์ชันแฮช 5 อิสระมาใช้ใหม่สำหรับการตรวจสอบเชิงเส้น
ในตารางแฮชที่แก้ไขการชนกันโดยการตรวจเชิงเส้นเพื่อให้แน่ใจว่าประสิทธิภาพคาดหวังมีความจำเป็นและเพียงพอที่ฟังก์ชันแฮชจะมาจากตระกูลอิสระ 5 ตัว (ความพอเพียง: "การตรวจสอบเชิงเส้นด้วยความเป็นอิสระอย่างต่อเนื่อง", Pagh et al. , ความจำเป็น: "ใน k-Independence ที่กำหนดโดยการตรวจสอบเชิงเส้นและความเป็นอิสระต่ำสุด", Pătraşcuและ Thorup )O ( 1 )O(1)O(1) ฉันเข้าใจว่าครอบครัวที่เป็นอิสระ 5 คนที่รู้จักกันเร็วที่สุดใช้ตาราง การเลือกฟังก์ชั่นจากครอบครัวที่ดังกล่าวอาจจะมีราคาแพงดังนั้นฉันต้องการที่จะลดจำนวนครั้งที่ฉันทำดังนั้นในขณะที่ยังคงมีการป้องกันการโจมตีซับซ้อนอัลกอริทึมที่อธิบายไว้ในครอสบีและวัลลักของ"Denial of Service ผ่านการโจมตีขั้นตอนซับซ้อน" ฉันกังวลน้อยเกี่ยวกับการโจมตีเวลา (เช่นศัตรูที่มีนาฬิกาจับเวลา) อะไรคือผลของการใช้ฟังก์ชันเดียวกันซ้ำ: เมื่อเพิ่มตารางแฮชที่เต็มเกินไป เมื่อลดขนาดตารางแฮชที่ไม่เต็มเพียงพอหรือไม่ เมื่อสร้างตารางแฮชที่มีบิต "ลบ" ที่ตั้งค่าไว้มากเกินไปหรือไม่ ในตารางแฮชที่แตกต่างกันที่อาจมีบางคีย์เหมือนกัน?kkk kkkที่แตกต่างกันตารางแฮชที่มีปุ่มในการร่วมกันไม่ได้หรือไม่

3
การผสมแฮชที่เกี่ยวข้อง
พิจารณารายการที่มีการเชื่อมโยงต่ำมากในการตั้งค่าการทำงานอย่างหมดจด การสรรเสริญของมันได้รับการร้องจากยอดเขาและจะยังคงสูง ที่นี่ฉันจะพูดถึงหนึ่งในจุดแข็งและคำถามว่ามันจะขยายไปสู่ระดับที่กว้างขึ้นของลำดับการทำงานที่บริสุทธิ์โดยใช้ต้นไม้ ปัญหามีดังต่อไปนี้: คุณต้องการทดสอบความเท่าเทียมกันของโครงสร้างเกือบทั้งหมดในเวลา O (1) โดยใช้วิธีการแปลงแป้นพิมพ์ที่เข้มงวด หากฟังก์ชันแฮชคือการเรียกซ้ำแบบโครงสร้างเช่น hash (x: xs) = ผสม x (hash xs) ดังนั้นคุณสามารถแคชค่าแฮชของรายการอย่างโปร่งใสและอัปเดตในเวลา O (1) เมื่อองค์ประกอบถูกพิจารณาลงในรายการที่มีอยู่ . อัลกอริทึมส่วนใหญ่สำหรับรายการที่แปลงแป้นพิมพ์มีการวนซ้ำแบบโครงสร้างดังนั้นวิธีนี้จึงใช้งานได้อย่างเด่นชัด แต่สมมติว่าแทนที่จะเป็นรายการที่เชื่อมโยงโดยลำพังคุณมีลำดับต้นไม้ที่สนับสนุนการเชื่อมโยงความยาว O (n) สองลำดับในเวลา O (log n) สำหรับการแคชแฮชให้ทำงานที่นี่ฟังก์ชันการผสมแฮชจะต้องเชื่อมโยงเพื่อเคารพองศาอิสระของต้นไม้ที่แสดงถึงลำดับเชิงเส้นเดียวกัน มิกเซอร์ควรใช้ค่าแฮชของทรีย่อยและคำนวณค่าแฮชของทรีทั้งหมด นี่คือที่ฉันเมื่อหกเดือนที่แล้วเมื่อฉันใช้เวลาหนึ่งวันครุ่นคิดและค้นคว้าปัญหานี้ ดูเหมือนว่าจะไม่ได้รับความสนใจในวรรณกรรมเกี่ยวกับโครงสร้างข้อมูล ฉันเจออัลกอริธึมการแปลงรหัส Tillich-Zemor จากการเข้ารหัส มันอาศัยการคูณเมทริกซ์ 2x2 (ซึ่งเชื่อมโยง) โดยที่บิต 0 และ 1 สอดคล้องกับเครื่องกำเนิดไฟฟ้าสอง subalgebra ที่มีรายการในฟิลด์ Galois คำถามของฉันคือฉันพลาดอะไรไป จะต้องมีเอกสารที่เกี่ยวข้องทั้งในวรรณคดีเกี่ยวกับการเข้ารหัสและโครงสร้างข้อมูลที่ฉันไม่พบในการค้นหาของฉัน …

1
จำเป็นต้องมีความอิสระในการผูกมัดแยกกันมากแค่ไหน?
หากมีการใส่ลูกบอลลูกลงในถังขยะnอย่างสม่ำเสมอถังที่บรรจุน้ำหนักมากที่สุดจะมีลูกบอลO ( lg n / lg lg n ) ที่มีความน่าจะเป็นสูง ใน"พลังแห่งการทำตารางง่าย ๆ " , Pătraşcuและ Thorup พูดถึงว่า"Chernoff-Hoeffding ขอบเขตสำหรับการใช้งานที่มีความเป็นอิสระ จำกัด " ( กระจก ) แสดงให้เห็นว่าสิ่งนี้ถูกผูกไว้กับประชากรของถังขยะที่โหลดหนักที่สุดเช่นกันΩ ( lg n / lg lg n ) -ฟังก์ชันแฮชอิสระnnnnnnO ( lgn / lgLGn )O(lg⁡n/lg⁡lg⁡n)O(\lg n/\lg \lg n)Ω ( lgn / lgLGn )Ω(lg⁡n/lg⁡lg⁡n)\Omega(\lg n/\lg \lg n) ใน"ลูกบอลและถังขยะ: …

1
สถานะของการวิจัยในการโจมตีการปะทะกันของ SHA-1
การรักษาความปลอดภัย SHA-1 ได้มีการพูดคุยกันตั้งแต่อัลกอริทึมสำหรับการค้นหาการชนถูกเผยแพร่ครั้งแรกที่ CRYPTO 2004 และได้รับการปรับปรุงในภายหลัง Wikipedia แสดงรายการอ้างอิงสองสามฉบับ แต่ดูเหมือนว่างานวิจัยล่าสุดที่ตีพิมพ์ (และถอนภายหลัง) ในหัวข้อนี้คือในปี 2009 (Cameron McDonald, Philip Hawkes และ Josef Pieprzyk "เส้นทางที่แตกต่างสำหรับ SHA-1 ที่มีความซับซ้อน O (2 ^ 52)" ) ตั้งแต่นั้นมามีความคืบหน้าสำคัญในการลดความพยายามในการโจมตีการชนกันของข้อมูลบน SHA-1 หรือไม่? ลิงค์ไปยังการวิจัยเฉพาะพร้อมกับสรุปสั้น ๆ จะได้รับการชื่นชม

1
มีอัลกอริธึมแฮ 'สะท้อนกลับ' หรือไม่?
มีคลาสของอัลกอริธึมการแฮชไม่ว่าจะเป็นทางทฤษฎีหรือปฏิบัติเช่นนั้นอัลกอริทึมในชั้นเรียนอาจถูกพิจารณาว่าเป็น 'แบบสะท้อน' ตามคำนิยามที่ให้ไว้ด้านล่าง: hash1 = algo1 ("ป้อนข้อความ 1") hash1 = algo1 ("ข้อความที่ป้อน 1" + hash1) ตัวดำเนินการ + อาจเป็นการต่อข้อมูลหรือการดำเนินการที่ระบุอื่น ๆ เพื่อรวมเอาท์พุท (hash1) กลับไปที่อินพุต ("อินพุตข้อความ 1") เพื่อให้อัลกอริทึม (algo1) จะให้ผลลัพธ์ที่เหมือนกันทุกประการ เช่นการชนกับอินพุตและอินพุต + เอาต์พุต ผู้ประกอบการ + จะต้องรวมทั้งอินพุตทั้งหมดและอัลโกอาจไม่ทิ้งส่วนหนึ่งของอินพุต อัลกอริทึมจะต้องผลิตเอนโทรปีสูงในผลลัพธ์ มันอาจ แต่ไม่จำเป็นต้องเป็นเรื่องยากที่จะเข้ารหัส cryptographically เพื่อย้อนกลับผลลัพธ์กลับไปยังหนึ่งหรือทั้งสองอินพุตที่เป็นไปได้ ฉันไม่ใช่นักคณิตศาสตร์ แต่คำตอบที่ดีอาจรวมถึงหลักฐานว่าทำไมคลาสอัลกอริธึมจึงไม่มีอยู่จริง อย่างไรก็ตามนี่ไม่ใช่คำถามที่เป็นนามธรรม ฉันสนใจที่จะใช้อัลกอริทึมแบบนี้ในระบบของฉันอย่างแท้จริงหากมีอยู่จริง นี่เป็นคำถามซ้ำที่โพสต์ครั้งแรกที่/programming/4823680/reflexive-hash

2
ฉันจะเลือกโครงสร้างข้อมูลพจนานุกรมที่ทำงานได้อย่างไร
ฉันได้อ่านเกี่ยวกับโครงสร้างข้อมูลต่อไปนี้: Ideal Hash พยายามของแบกเวล ตารางแฮชแบบไดนามิกของ Larson ต้นไม้สีแดง - ดำ ต้นไม้แพทริเซีย ... และฉันแน่ใจว่ามีเป็นจำนวนมากของคนอื่น ๆ ออกมี ฉันได้เห็นน้อยมากในแบบของสิ่งที่แต่ละคนเหมาะสมกว่าหรือทำไมฉันถึงเลือกอีกแบบหนึ่ง ดังนั้นนี่คือคำถามสองสามข้อตามบรรทัดเหล่านี้: โครงสร้างข้อมูลพจนานุกรมที่ใช้งานได้มีความสำคัญอะไรที่ต้องรู้ อะไรคือข้อดีข้อเสียของวิธีการเหล่านี้? เมื่อใดที่จะใช้โครงสร้างข้อมูลที่จำเป็นมากขึ้น หมายเลข 2 และ 3 เป็นสิ่งที่สำคัญกว่า :-)

2
การแฮชชุดจำนวนเต็มสำหรับการทดสอบแบบรวม
ฉันกำลังมองหาฟังก์ชันแฮชมากกว่าชุด H (.) และความสัมพันธ์ R (.,.) เช่นนั้นหากรวมอยู่ใน B ดังนั้น R (H (A), H) (H) แน่นอน R (.,.) ต้องง่ายต่อการตรวจสอบ (เวลาคงที่) และควรคำนวณ H (A) ในเวลาเชิงเส้น ตัวอย่างหนึ่งของ H และ R คือ: H(A)=⋁x∈A1&lt;&lt;(h(x)modk)H(A)=⋁x∈A1&lt;&lt;(h(x)modk)H(A) = \bigvee_{x\in A} 1 << (h(x) \mod k)โดยที่ k เป็นจำนวนเต็มคงที่และ h (x) เป็นฟังก์ชันแฮชมากกว่าจำนวนเต็ม R (H (A), H (B)) = ((H (A) …

2
สตริงสากลเกือบคร่ำครึ
นี่คือฟังก์ชันแฮชสองตระกูลบนสตริง x⃗ = ⟨x0x1x2...xม.⟩x→=⟨x0x1x2...xม.⟩\vec{x} = \langle x_0 x_1 x_2 \dots x_m \rangle: สำหรับ พีพีp นายกและ xผม∈Zพีxผม∈Zพีx_i \in \mathbb{Z_p}, ชั่วโมง1a(x⃗ ) = ∑aผมxผมmod pชั่วโมงa1(x→)=Σaผมxผมพอควรพีh^1_{a}(\vec{x}) = \sum a^i x_i \bmod pสำหรับ\ Dietzfelbinger และคณะ แสดงให้เห็นว่าใน "ฟังก์ชั่นแฮพหุนามเชื่อถือ" ที่ pa ∈Zพีa∈Zพีa \in \mathbb{Z}_p∀ x ≠ y,Pa(ชั่วโมง1a( x ) =ชั่วโมง1a( y) ) ≤ m / p∀x≠Y,Pa(ชั่วโมงa1(x)=ชั่วโมงa1(Y))≤ม./พี\forall …

1
Knuth ได้รับ A มาอย่างไร
เมื่อตีความคีย์เป็นตัวเลขธรรมชาติเราสามารถใช้สูตรต่อไปนี้ h(k)=⌊m(kAmod1)⌋h(k)=⌊m(kAmod1)⌋\begin{equation} h(k) = \lfloor m (kA\bmod{1}) \rfloor \end{equation} สิ่งที่ฉันมีปัญหาในการทำความเข้าใจคือวิธีที่เราเลือกคุณค่าของ A ที่: 0&lt;A&lt;10&lt;A&lt;1\begin{equation} 0 < A < 1 \end{equation} ตาม Knuth ค่าที่ดีที่สุดคือ: A≈(5–√−1)/2=0.6180339887...A≈(5−1)/2=0.6180339887...\begin{equation} A \thickapprox (\sqrt{5} - 1) / 2 = 0.6180339887... \end{equation} ดังนั้นคำถามของฉันคือ Knuth เกิดขึ้นได้อย่างไรและฉันจะคำนวณค่าที่เหมาะสมสำหรับข้อมูลเฉพาะของฉันได้อย่างไร

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

2
โครงสร้างข้อมูลที่ดีที่สุดสำหรับแผนผังต้นไม้คืออะไร
ฉันกำลังมองหาโครงสร้างข้อมูลซึ่งโดยพื้นฐานแล้วเป็นแผนผังของแผนที่ที่แผนที่ในแต่ละโหนดมีองค์ประกอบใหม่ ๆ รวมถึงองค์ประกอบในแผนที่ของโหนดแม่ โดยแผนที่ที่นี่ฉันหมายถึงแผนที่การเขียนโปรแกรมที่มีคีย์และค่าเช่น map ใน STL หรือ dict ใน python ตัวอย่างเช่นอาจมีโหนดรูท: root = {'car':1, 'boat':2} และเด็ก 2 คนแต่ละคนเพิ่มองค์ประกอบไปยังแผนที่หลัก child1 = {'car':1, 'boat':2, 'jet':35} child2 = {'car':1, 'boat':2, 'scooter':-5} ฉันต้องการให้พื้นที่มีประสิทธิภาพเท่าที่จะเป็นไปได้เช่นฉันไม่ต้องการเก็บสำเนาของแผนที่ที่เกิดขึ้นในแต่ละโหนด แต่การค้นหาจะยังคงเป็น O (log N), N เป็นจำนวนทั้งหมดของ องค์ประกอบที่โหนดไม่ใช่ต้นไม้ทั้งหมด ฉันคิดว่าอาจจะมีฟังก์ชั่นแฮชอัจฉริยะที่ฉันอาจใช้กับสิ่งนี้ แต่ไม่สามารถคิดอะไรได้เลย วิธีการไร้เดียงสาจะเก็บรายการที่เพิ่มเข้ามาใหม่ในแผนที่ที่แต่ละโหนดแล้วเลื่อนขึ้นต้นไม้หากไม่พบสิ่งใด ฉันไม่ชอบสิ่งนี้เพราะมันขึ้นอยู่กับความลึกของต้นไม้
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.