Score:0

เมื่อป้อนสตรีมของค่าไบนารีดิบไปยังแฮช SHA256 และพบค่า 10000000 ในสตรีมอินพุต แฮชจะสิ้นสุดหรือไม่

ธง ng

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

Score:1
ธง ng

อัลกอริทึมแฮช SHA-256 ปฏิบัติต่อค่า 10000000 นั้นอย่างไร เนื่องจากเป็นเครื่องหมายที่ใช้ในตอนท้ายของอินพุตแฮชด้วย

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

มีเหตุผลที่ต้องกังวลเกี่ยวกับรูปแบบการสิ้นสุดเมื่อจัดการกับ ความลับ ข้อมูล: SHA-256 คุณสมบัติการขยายความยาว. มันถือสำหรับใด ๆ Merkle-DamgÃ¥rd กัญชา $H$ที่สำหรับความยาวใด ๆ $\ell$ (มากถึงขีด จำกัด มาก) มีบิตสตริงสั้น ๆ $b_\ell$ (รวมถึงรูปแบบสิ้นสุด) และฟังก์ชันที่คำนวณได้อย่างมีประสิทธิภาพ $H_\ell$ เช่นนั้นสำหรับ bitstring ใด ๆ $m$ ของ $\ell$ bit สำหรับ bitstring ใดๆ $m'$ (ถึงขนาดใหญ่มาก) ก็ถือเอา $$H(m\mathbin\|b_\ell\mathbin\|m')=H_\ell(H(m)\mathbin\|m')$$

สำหรับความลับใด ๆ $m$ ด้วยความยาวที่ทราบ $\ell$ และแฮชที่รู้จัก $H(ม)$คุณสมบัตินี้ช่วยให้สามารถคำนวณได้ $H(m\mathbin\|m')$ สำหรับใครก็ตามที่ทราบ $m'$ เริ่มต้นใน $b_\ell$. มันก็เพียงพอแล้วที่จะพิสูจน์ว่า $m\mapsto H(k\mathbin\|m)$ ไม่ใช่รหัสยืนยันข้อความที่ปลอดภัยด้วยรหัส $k$.

Score:1
ธง fr

ฟังก์ชันแฮชที่มีความปลอดภัยในการเข้ารหัสสามารถจัดการลำดับไบต์ใดๆ ก็ได้ตามอำเภอใจ โดยไม่คำนึงว่าไบต์เหล่านั้นคืออะไรหรือมีรูปแบบอย่างไร อาจเป็นไปได้จนถึงขนาดสูงสุดที่ระบุ (ซึ่งสำหรับ SHA-256 คือ $ 2^{64} $ บิต)

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

โปรดทราบว่าอัลกอริทึมแฮชอื่นๆ เช่น SHA-3 และ BLAKE2 ใช้แผนการเติมที่แตกต่างกัน และยังสามารถจัดการรูปแบบการป้อนข้อมูลโดยอำเภอใจได้โดยไม่มีปัญหา โครงร่างการเติมเหล่านี้ แม้จะแตกต่างจากการก่อสร้างของ Merkle-DÃ¥mgard แต่ก็เชื่อว่ามีความปลอดภัย และอาจเป็นที่นิยมมากกว่าด้วยเหตุผลอื่นๆ

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

โพสต์คำตอบ

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