Tôi đang cố gắng hiểu thuật toán SHA2 - 512, vì vậy tôi theo tài liệu này có giá trị trung gian cho chuỗi "abc". Tại t=0
, các giá trị cho f
, h
và g
thẳng thắn. Nhưng tôi không nhận được cùng một giá trị cho e
, điều này cho thấy rằng tôi đang làm sai điều gì đó khi đang tính toán $T_1 = h + \Sigma_1(e) + \text{Ch}(e,f,g) + K_i + W_i$. Tôi gần như chắc chắn rằng tôi đã thực hiện $\text{Ch()}$ và $\Sigma_1 ( )$ một cách chính xác. Tôi đoán vấn đề của tôi có thể là với việc bổ sung trên $\pmod {2^{64}}$. Tôi hiểu mỗi thuật ngữ trong tổng kết của $T_1$ là một số 64-bit. Vì vậy, tôi cho rằng chúng ta có thể chuyển đổi những con số này thành số nguyên và cộng chúng lại với nhau $\pmod {2^{64}}$. Bây giờ, số kết quả có thể không dài 64 bit ở dạng nhị phân. chúng ta có thêm $0$ở phía trước phía sau biểu diễn nhị phân để làm cho nó dài 64 bit?
Tôi không chắc liệu điều này có hữu ích hay không, nhưng đây là một vài giá trị tôi nhận được ở dạng nhị phân cho t=0
(hiện tại tôi đang thêm các số 0 vào bên trái của bit quan trọng nhất):
#Sigma_1(e)
01010001000011100101001001111111110101101111001101000001011010001
#Ch(e,f,g)
0001111110000101110010011000110001111011001001110011110100111011
#T_1
0110100101100101001100111001100011001110110101111110100010100000
#e <- T_1 + d
0000111010110101001010001101001100101101111101010001111110010001
trong khi theo tài liệu, e
ở dạng nhị phân là 1100001111010100111010111111110101001000011001010000111111111010
.
Nếu bạn có thể cung cấp một tài nguyên bao gồm các giá trị trung gian cho các chức năng khác này, thì tôi hy vọng mình có thể tìm ra nó. Mặt khác, sẽ được đánh giá cao nếu bạn có thể đưa ra lời giải thích chi tiết về cách lấy giá trị chính xác. Vui lòng cho tôi biết nếu bạn muốn tôi cung cấp thêm thông tin.