ฉันกำลังพยายามทำความเข้าใจอัลกอริทึม SHA2 - 512 ดังนั้นฉันจึงเข้าใจ ตามเอกสารนี้ ซึ่งมีค่ากลางสำหรับสตริง "abc" ที่ เสื้อ=0
, ค่าสำหรับ ฉ
, ชม.
และ ช
มีความตรงไปตรงมา แต่ฉันไม่ได้รับค่าเดียวกันสำหรับ อี
ซึ่งแสดงว่าฉันกำลังทำอะไรผิดเมื่อฉันกำลังคำนวณ $T_1 = h + \Sigma_1(e) + \text{Ch}(e,f,g) + K_i + W_i$. ฉันเกือบจะแน่ใจว่าฉันได้ดำเนินการแล้ว $\text{Ch( )}$ และ $\Sigma_1 ( )$ อย่างถูกต้อง ฉันเดาว่าปัญหาของฉันอาจเกิดจากการเพิ่มเติม $\pmod {2^{64}}$. ฉันเข้าใจคำศัพท์แต่ละคำในผลรวมของ $T_1$ เป็นตัวเลข 64 บิต ฉันคิดว่าเราสามารถแปลงตัวเลขเหล่านี้เป็นจำนวนเต็มแล้วบวกกันได้ $\pmod {2^{64}}$. ตอนนี้จำนวนผลลัพธ์อาจไม่ยาว 64 บิตในไบนารี เราเพิ่ม $0$อยู่ข้างหน้าข้างหลังการแทนไบนารีเพื่อให้ยาว 64 บิตหรือไม่
ฉันไม่แน่ใจว่าสิ่งนี้มีประโยชน์หรือไม่ แต่นี่คือค่าบางส่วนที่ฉันได้รับจากเลขฐานสอง เสื้อ=0
(ตอนนี้ฉันกำลังเพิ่มศูนย์ทางด้านซ้ายของบิตที่สำคัญที่สุด):
#Sigma_1(จ)
0101000100001110010100100111111110101101111001101000001011010001
#Ch(จ,ฉ,ก)
0001111110000101110010011000110001111011001001110011110100111011
#T_1
0110100101100101001100111001100011001110110101111110100010100000
#e <- T_1 + ง
0000111010110101001010001101001100101101111101010001111110010001
ขณะที่ตามเอกสารระบุว่า อี
ในเลขฐานสองคือ 1100001111010100111010111111110101001000011001010000111111111010
.
หากคุณสามารถจัดเตรียมทรัพยากรที่มีค่ากลางสำหรับฟังก์ชันอื่นๆ เหล่านี้ได้ ฉันหวังว่าฉันจะสามารถเข้าใจได้ มิฉะนั้น จะเป็นการขอบคุณมากหากคุณสามารถให้คำอธิบายโดยละเอียดเกี่ยวกับวิธีรับค่าที่ถูกต้อง โปรดแจ้งให้เราทราบหากคุณต้องการให้เราใส่ข้อมูลเพิ่มเติม