Score:3

ฉันสามารถถือว่าแฮช SHA-256 เป็นการทอยลูกเต๋า 64 ลูกที่มีตัวเลขระหว่าง 1 ถึง 16 ได้หรือไม่

ธง in

ความเข้าใจของฉันคือ SHA-256 ค่อนข้างสุ่มหรือ "สุ่ม" เพียงพอ

ฉันคิดว่านั่นหมายความว่าตัวละครทุกตัวจะทำงานเหมือนการทอยลูกเต๋า 1 ถึง 16

ด้วยสมมติฐานนี้ ฉันคาดหวังว่าคุณจะสามารถจำลองความน่าจะเป็นของอักขระซ้ำได้เป็น $16^x$. ดังนั้นห่วงโซ่ของ $\texttt{FFF}$ หรือ $\texttt{333}$ ก็มีโอกาสเป็น 1 ต่อ $16^3 (4096)$ และห่วงโซ่ของ $\texttt{FFFF}$ มีโอกาส 1 ต่อ $16^4 (65536)$.

แต่ในขณะที่สร้างแฮชจำนวนมาก (โดยมี UUID แบบสุ่มเป็นเมล็ด) เพื่อยืนยันสมมติฐานของฉัน ตัวเลขจะไม่เพิ่มขึ้น ตัวอย่างเช่น ในชุดแฮช 100,000 แฮช ฉันมีเชนมากกว่า 1,000 ตัวที่มีอักขระ 4 ตัวขึ้นไป (ในขณะที่ฉันคาดหวังระหว่าง 1 ถึง 2 เชน)

ดังนั้นฉันจึงพยายามทำความเข้าใจว่าทำไมข้อสันนิษฐานของฉันถึงผิดในตอนแรก

ฉันเข้าใจผิดโดยพื้นฐานเกี่ยวกับการสุ่มของแฮช SHA-256 หรือเป็นอย่างอื่น

kelalaka avatar
in flag
ไม่ใช่คำถามที่ชัดเจนเนื่องจากการทดสอบของคุณไม่ชัดเจน ดู[การทดลองของ SHA-1 บนเลขศูนย์นำหน้า](https://crypto.stackexchange.com/a/83227/18298) คุณมีโซ่ 1K ได้อย่างไร? โปรดทราบว่าเราจำลอง SHA-256 เป็นฟังก์ชัน Pseudo-Random เราไม่รู้ว่าไม่ใช่
kelalaka avatar
in flag
โมเดลของคุณขาดจุดที่เอาต์พุต 64 ฐานสิบหกของ SHA-256 คุณต้องค้นหาความน่าจะเป็นของลำดับ 4 อักขระที่ใดก็ได้ คุณไม่สามารถสร้างแบบจำลองเนื่องจากแต่ละฐานสิบหกเอาต์พุตเป็นแบบม้วนเดียว เนื่องจากไม่ขึ้นกับอินพุต...
in flag
@kelalaka ขอบคุณสำหรับการป้อนข้อมูล!
Score:4
ธง my

ดังนั้นห่วงโซ่ของ $\texttt{FFF}$ หรือ $\texttt{333}$ ก็มีโอกาสเป็น 1 ต่อ $16^3 (4096)$

จริงๆ แล้ว มีโอกาส nybbles ซ้ำ 3 ครั้ง (ไม่ว่าจะเป็น $\texttt{FFF}$ หรือ $\texttt{333}$ หรือ $\texttt{000}$) จะเป็น 1 ใน $16^2 (256)$ - ที่เกิดขึ้นเพราะมี $16^3$ ค่าที่เป็นไปได้เท่าๆ กันของ nybbles 3 ตัวนั้น และ 16 รูปแบบเหล่านั้นเป็นซ้ำ ดังนั้นความน่าจะเป็นของการเกิดซ้ำคือ ${16 \มากกว่า 16^3} = {1 \มากกว่า 16^2}$. หากคุณระบุว่าต้องเป็น $\texttt{FFF}$ (และอื่น ๆ $\texttt{333}$ ไม่นับ) คุณก็จะได้ $16^3$; อย่างไรก็ตาม นั่นไม่ใช่สิ่งที่คุณกำลังทำอยู่

ตัวอย่างเช่น ในชุดของแฮช 100,000 ฉันมีเชนมากกว่า 1,000 ตัวที่มีอักขระ 4 ตัวขึ้นไป

ถูกต้อง - ใน 100,000 แฮช มีตำแหน่งประมาณ 6,000,000 แห่งที่อาจเกิดเสียง nybbles ซ้ำๆ กัน 4 ครั้ง; สถานที่ใดสถานที่หนึ่งที่มีความน่าจะเป็น $16^{-3} = {1 \มากกว่า 4096}$ ของการทำซ้ำ - การคำนวณอย่างง่ายจะให้การทำซ้ำประมาณ 1,400 สตริง

ฉันพูดแบบง่ายๆ เพราะการคำนวณตรงไปตรงมานี้ไม่สนใจสตริงที่ทับซ้อนกัน ตัวอย่างเช่น สตริงที่มีเสียงพูดซ้ำๆ 5 ครั้งจะนับเป็นการรัน ไม่ใช่การรัน 2 ครั้งจาก 4 นอกจากนี้ ความน่าจะเป็นที่เกี่ยวข้องกับสตริงที่ทับซ้อนกันจะไม่เป็นอิสระต่อกัน แม้ว่าผลกระทบเหล่านี้จะลดผลรวมที่คาดหวังลงบ้าง แต่ฉันเชื่อว่าการคำนวณอย่างง่ายนั้นดีพอสำหรับการประมาณการแบบหลังซอง

in flag
ขอบคุณมาก! เมื่อชี้ให้เห็นข้อผิดพลาดในการสันนิษฐานของฉัน ฉันสามารถเข้าใจได้ว่าปัญหาอยู่ที่ไหน และด้วยวิดีโอนี้ https://www.youtube.com/watch?v=O4Qnsubo2tg ฉันสามารถเข้าใจได้ว่าฉันต้องปรับฟังก์ชันของฉันอย่างไร
in flag
tbh ฉันยังคงสับสนเล็กน้อยว่าทำไมโอกาสของ 1/4096 ไม่ได้หมายถึงผลลัพธ์เฉลี่ย 100k / 4096 เพราะนั่นจะเป็น ~24
knaccc avatar
es flag
@braunbaer เนื่องจากในสตริง 64 char hex มี 61 ตำแหน่งที่เป็นไปได้ที่สามารถมีลำดับสตริง 4-hex ได้ สำหรับแต่ละตำแหน่งนั้น โอกาสที่อักขระตัวแรกจะเหมือนกับอักขระสามตัวถัดไปคือ (1/16)^3 = (1/4096) ดังนั้น ลำดับเลขฐานสิบหกซ้ำสี่ต่อแฮชจะเป็น (1/4096 * 61) = 0.01489257812 ต่อแฮช 100k นั่นคือ 0.01489257812 * 100k = 1489
in flag
@knaccc ใช่! นั่นสมเหตุสมผลมาก เพื่อให้ชัดเจน หากเราจะทำงานกับสตริงเลขฐานสิบหก 4 แท่ง เราจะมีโอกาส "ธรรมดา" ที่ 1/4096 เนื่องจากมีเพียงตำแหน่งเดียวที่เป็นไปได้สำหรับลำดับสตริง 4 ฐานสิบหก หรือ (1/4096 *1) ต้องมีความชัดเจน
knaccc avatar
es flag
@braunbaer ใช่เลย โอกาส 1/4096 ที่เลขฐานสิบหกทั้งหมดจะเหมือนกัน ซึ่งเป็นอีกวิธีหนึ่งที่บอกว่าถ่านตัวที่ 2, 3 และ 4 เหมือนกันกับตัวแรกทั้งหมด
Maarten Bodewes avatar
in flag
คำถาม / คำตอบนี้สร้าง HNQ ดังนั้นฉันจึงแก้ไขคำถามให้เป็นตัวแทน - ซึ่งหมายถึงการอัปเดตคำตอบด้วย - หวังว่าคุณจะไม่รังเกียจ

โพสต์คำตอบ

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