Score:-1

จะใส่อัลกอริทึม SHA256 ได้อย่างไร (ตัวอย่างการใช้ Bitcoin Header)

ธง br

สำหรับบล็อก bitcoin ใด ๆ เรารวมฟิลด์ส่วนหัวต่าง ๆ เพื่อสร้างสตริงซึ่งเป็นอินพุตของอัลกอริทึม 2 pass SHA แฮชที่เป็นผลลัพธ์ต้องตรงกับแฮชในส่วนหัวของบล็อก เพื่อให้การบล็อกถูกต้อง

เพื่อทดสอบตรรกะนี้รวมถึงอัลกอริทึม SHA ฉันใช้ส่วนหัวของหมายเลขบล็อก 695877 (https://blockchain.info/rawblock/695877?format=json) เพื่อสร้างสตริงอินพุต 04008020546C359986812644420E453113E209AFEAEEB316F3A0700000000000000000000B8FA13B3FCA087C1456DAAC626AB9B8A47EAEEE82103263

ตอนนี้เมื่อฉันใช้อัลกอริทึม 2 pass SHA แฮชผลลัพธ์จะตรงกับแฮชในบล็อก (โดยไม่สนใจส่วน Endian ในขณะนี้)

แฮชที่คำนวณได้: 629ef98d63e12f6b01476419a5a71efa8814dea40aec09000000000000000000

แฮชบล็อก: 00000000000000000009ec0aa4de1488fa1ea7a5196447016b2fe1638df99e62

แต่เมื่อฉันใส่ส่วนหัวด้วยตนเองก่อนที่จะส่งต่อไปยัง 2 ผ่านอัลกอริทึม SHA ดังนี้: 04008020546c359986812644420e453113e209afeaaeeb316f3a07000000000000000000b8fa13b3fca087c1456daac626ab9b8a47eae821a326f17e0ffffc15433df709b0f718610b1812175a5c9544800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280 สิ่งนี้ส่งผลให้เกิดแฮชที่ไม่ถูกต้อง

ฉันไม่เห็นว่ามีอะไรผิดปกติในช่องว่างภายใน ใครช่วยกรุณาชี้ให้เห็นได้ไหม

J.Doe avatar
br flag
ฉันไม่เข้าใจคำถามของคุณเราแพดข้อความเพื่อให้ (ความยาวของข้อความเป็นจำนวนบิต)%512=0 ขณะที่เราประมวลผล 512 บิต
A. Hersean avatar
cr flag
คุณยืนยันว่าสตริงอินพุตดั้งเดิมสร้างแฮชที่ถูกต้อง จากนั้นคุณเพิ่ม `800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280` ลงในสตริงอินพุตโดยแก้ไข สิ่งนี้จะเปลี่ยนแฮชของสตริง นั่นคือสิ่งที่แฮชควรทำ เหตุใดคุณจึงต้องการแพด ในเมื่อข้อความที่ไม่ได้แพดสร้างผลลัพธ์ที่ต้องการ
fgrieu avatar
ng flag
การย้ำความคิดเห็นข้างต้นเป็นอย่างอื่น: ช่องว่างภายในของแฮชเป็นส่วนหนึ่งของการแฮช และไม่ควรทำภายนอก
J.Doe avatar
br flag
ฉันกำลังพยายามใช้ SHA ด้วยตัวเองตั้งแต่เริ่มต้น (เพื่อดูว่าฉันเข้าใจถูกต้องหรือไม่)มีแบบสอบถามติดตามผล: หากฉันใช้ส่วนหัวด้านบน (ไม่มีแป้น) และมอบให้กับ algo เป็นเวลา 2 รอบ มันจะให้ผลลัพธ์ที่ถูกต้องหากระบุข้อมูลเป็น 'HEX' แต่ล้มเหลวสำหรับ 'TEXT' มีการประมวลผลล่วงหน้าประเภทใดบ้างในการแปลงข้อมูล 'HEX' เป็น 'TEXT' ก่อนที่เราจะเรียกใช้อัลกอริทึม SHA รหัสหลอก SHA ส่วนใหญ่ที่ฉันเห็นจะถือว่าข้อมูลเป็นรูปแบบเช่น 'TEXT' ฉันจะดีมากถ้าคุณสามารถอธิบายโดยใช้หัวข้อปัจจุบันด้านบน? นี่คือเครื่องมือ [https://emn178.github.io/online-tools/sha256.html]
fgrieu avatar
ng flag
ฉันขอแนะนำให้คุณปิดคำถามนี้เนื่องจากปัญหาเดิมได้รับการแก้ไขแล้ว และก่อนที่จะถามคำถามใหม่เกี่ยวกับการเติม SHA-256 คุณต้องอ่านคำตอบของ [คำถามอื่นๆ เกี่ยวกับการเติม SHA-256](https://crypto.stackexchange.com/questions/tagged/padding%2bsha-256?tab=Votes) ก่อน ) อาจเริ่มต้นด้วย [สิ่งนี้](https://crypto.stackexchange.com/a/9370/555) และ [นั่น](https://crypto.stackexchange.com/a/79735/555) นอกจากนี้ โปรดอ่าน [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf) ซึ่งมีทุกสิ่งที่จำเป็น
Score:-3
ธง vn

ตรวจสอบให้แน่ใจว่าขนาดของการเข้ารหัสในบล็อกนั้นเหมือนกับขนาดที่คุณกำลังเปรียบเทียบ ปัญหาดังกล่าวอาจเกิดขึ้นได้เมื่อขนาดบล็อกไม่สอดคล้องกัน

fgrieu avatar
ng flag
ไม่มีการเข้ารหัสที่เกี่ยวข้อง: การแฮชไม่ใช่การเข้ารหัส นอกจากนี้ปัญหาคือระดับการเติมพิเศษมากกว่าปัญหาขนาด

โพสต์คำตอบ

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