Câu trả lời ngắn;
Bạn đang trộn hàm nén và hàm băm. Cả hai trang/thư viện đều đúng với ngữ cảnh của chúng!
câu trả lời mở rộng
SHA-256 giống như các thuật toán băm khác luôn được đệm và nó được định nghĩa trong NIST.FIPS.180-4
Giả sử độ dài của tin nhắn $M$, Trong các bit, $\ell$ là bit. Nối bit 1
đến cuối tin nhắn, tiếp theo là k
bit không, ở đâu k
là nghiệm không âm nhỏ nhất của phương trình
$$\ell +1 + k \equiv 448 \bmod 512$$ Sau đó, nối thêm khối 64 bit bằng số $\ell$ được thể hiện bằng cách sử dụng biểu diễn nhị phân
Vì vậy, 512 bit số không trong SHA-256 sẽ có 447 số không ($k$ phần);
$$\text{Padded_Message} =\underbrace{\texttt{000...00}}_{512-zeros}||\texttt{1}||\underbrace{\texttt{000...00}}_ {447-zeros}||\underbrace{\texttt{leng encoding}}_{64-bit}$$
Nếu bạn thực sự muốn kiểm tra một số đầu vào, hãy đảm bảo rằng chúng chính xác trên các vectơ kiểm tra của NIST được xác định trong Chương trình xác thực thuật toán mật mã - Hàm băm
Đối với phần đệm, như thường lệ, không liên quan đến người dùng. Các thư viện xử lý phần đệm cho người dùng.
Vì nó chính xác là 512 bit nên không có sự phân tách và không có phần đệm. Nhưng từ các máy tính trực tuyến hoặc mã golang, tôi sẽ nhận được hàm băm sha-256 của đầu vào null là:
Như đã đề cập ở trên, phần đệm luôn được xác định. Nó là một phần của thuật toán băm SHA-256.
Đầu vào của bạn không phải là đầu vào rỗng, đó là đầu vào bằng không 512 bit. NIST cung cấp vectơ kiểm tra độ dài bằng 0 và kết quả là
Len = 0
tin nhắn = 00
MD = e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
Kiểm tra đầu vào của bạn trên sha256algorithm.com sản xuất
f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b
Tôi cũng đã kiểm tra trang này trên một số vectơ thử nghiệm của NIST.
Liên kết bạn cung cấp dưới dạng SCALA MAMBA đề cập như;
Đầu ra: Xâu chuỗi các giá trị sau khi nén khối đầu vào (có cùng định dạng với thông báo sẽ được trả về)
QUAN TRỌNG: Đây KHÔNG phải là các vectơ kiểm tra cho hàm băm SHA-256 hoàn chỉnh, vì các quy tắc đệm bị bỏ qua
Đây là đầu ra của chức năng nén đầu tiên. Điều này có thể được kiểm chứng trên sha256algorithm.com nếu bạn dừng lại ở bước thứ 164. Đặt chuột vào các giá trị ban đầu và bạn sẽ nhận được giá trị hex;
da5698be17b...
Điều này cũng tương tự trên liên kết khác đến; đưa ra như vectơ kiểm tra nén sha256.
Hãy nhớ đầu ra của hàm nén là giá trị ban đầu của hàm nén tiếp theo nếu cần. Nếu không cần thiết, thì đó là đầu ra của SHA-256. Các giá trị ban đầu đầu tiên được đưa ra;
Những từ này đại diện cho ba mươi hai bit đầu tiên của các phần phân số của căn bậc ba của sáu mươi bốn số nguyên tố đầu tiên
như một khong-up-im-my-tay-số mặc dù đây là tâm lý.