2010-12-12 62 views
9

Định nghĩa SHA-256 có vẻ như là đầu vào bao gồm một bit "1" duy nhất có giá trị băm được xác định rõ, khác với giá trị của "01" byte (vì phần đệm được thực hiện dựa trên độ dài của đầu vào theo bit).Hàm băm SHA-256 của một bit "1" là gì?

Tuy nhiên, do các vấn đề về cuối cùng và thực tế là không có triển khai nào mà tôi có thể tìm được hỗ trợ trong các bit đơn lẻ, tôi không thể tìm ra giá trị đúng này là gì.

Vì vậy, hàm băm chính xác của đầu vào 1 bit dài dài 1 bit bao gồm bit "1" là gì? (không phải đầu vào 8 byte dài [] {1}).

+1

lý do tại sao ???????????? –

+1

Bạn có thể tính toán nó bằng tay: http://en.wikipedia.org/wiki/SHA-2#SHA-256_.28a_SHA-2_variant.29_pseudocode nhưng nó sẽ nhận được khá tẻ nhạt khá nhanh. – MatrixFrog

+3

@dan: tại sao không ???????????? –

Trả lời

8

OK, theo thực hiện của riêng tôi:

1-chuỗi bit "1":

B9DEBF7D 52F36E64 68A54817 C1FA0711 66C3A63D 384850E1 575B42F7 02DC5AA1 

1-chuỗi bit "0 ":

BD4F9E98 BEB68C6E AD3243B1 B4C7FED7 5FA4FEAA B1F84795 CBD8A986 76A2A375 

Tôi đã thử nghiệm việc triển khai này o n một số đầu vào bội số của 8 bit chuẩn, bao gồm chuỗi 0 bit và kết quả là chính xác.

(tất nhiên điểm của câu hỏi này là để xác nhận các kết quả đầu ra trên ở nơi đầu tiên, vì vậy sử dụng một cách cẩn thận ...)

+1

Tôi xác nhận các giá trị này. Việc triển khai SHA-2 của riêng tôi là từ sphlib (http://www.saphir2.com/sphlib/). Mã C xử lý các đầu vào có độ dài không nhiều của 8. –

+0

Cảm ơn bạn @Thomas, tôi sẽ đánh dấu điều này được chấp nhận sau đó. –

+0

Cũng được xác nhận bởi triển khai của Perl, chấp nhận chuỗi trong mã hóa nhị phân. –

2

Không chắc chắn nếu tôi hiểu câu hỏi của bạn một cách chính xác.

SHA-256 hoạt động với kích thước khối 64 byte (= 512bits). Điều này có nghĩa là đầu vào nhỏ hơn phải được đệm đầu tiên. Kết quả của phần đệm trông giống như sau:

For Bit 1: 1100000000000...00000000001 
For Bits 01: 0110000000000...00000000010 

Vì kết quả này khác biệt nên kết quả của các chức năng nén sau đây cũng vậy. Và do đó giá trị băm là. Các tài liệu chuẩn giải thích đệm khá mô tả: http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf

+0

không chỉ SHA-256, tôi không thể nghĩ ra bất kỳ thuật toán nào không có hoặc lặp lại các đầu vào nhỏ. –

+1

Kích thước khối cho SHA256 là 512 bit không phải 256 bit. Xem RFC: 4634 "Thuật toán băm bảo mật của Hoa Kỳ (SHA và HMAC-SHA)", http://www.ietf.org/rfc/rfc4634.txt –

2

Có C mã có sẵn trong section 8 của RFC 4634 để tính toán hash của dữ liệu đó không nhất thiết là bội số của 8 bit. Xem các phương thức có tên là SHA*FinalBits(...).

Các vấn đề liên quan