Tiêu đề của câu hỏi (hiện tại) hỏi "Các bit đầu tiên của chuỗi bit là gì". Điều đó rõ ràng nếu các bit được trình bày riêng lẻ theo thứ tự thời gian hoặc bằng văn bản trong ngữ cảnh có thứ tự đọc thông thường, như từ trái sang phải.
Nhưng nội dung của câu hỏi là về "một chuỗi tạo từ sha256". Điều đó được đọc là SHA-256, được xác định bởi FIPS 180-4. Đó là một thuật toán xuất ra một "chuỗi bit" gồm $256$ bit và chúng không thể được nhận dạng ngay lập tức.
Thân câu hỏi có x =
theo dõi bởi $64$ ký tự tất cả các chữ số hoặc chữ cái từ một
đến f
(trong trường hợp thống nhất, ở đây chữ thường), đó là $16=2^4$ nhân vật. Điều đó gợi ý kết quả của SHA-256 được mã hóa trong thập lục phân, với mỗi ký tự mã hóa 4 bit (chú ý $256=64\times4$). Đây là một trong một số biểu diễn phổ biến của chuỗi bit dưới dạng ký tự.
Có một số cách khác nhau và không tương thích để chuyển đổi hệ thập lục phân thành bit, nhưng may mắn thay, trong trường hợp SHA-256, một cách được chỉ định trong 3.1 tiểu đoạn 2 trên trang được đánh dấu 7 của FIPS 180-4 (phải đọc). Tóm lại, các bit quan trọng nhất là đầu tiên, có thể là ở mức nibble (4-bit), byte (8-bit) hoặc từ (32-bit trong trường hợp SHA-256).
Vì vậy, để tìm thấy đầu tiên $i$ bit cho hàm băm SHA-256 đã cho, chúng ta có thể
Điều này áp dụng cho tất cả các giá trị băm của họ SHA (thay thế $256$ với chiều rộng đầu ra của chúng). Không có thông số kỹ thuật khác, thật hợp lý khi áp dụng nó cho các hàm băm tiêu chuẩn khác có chiều rộng đầu ra là bội số của $32$ (hoặc thậm chí $8$ hoặc $4$) chút ít. Điều đó gây tranh cãi đối với MD5, vì nó sử dụng ít-cuối cùng quy ước theo thứ tự byte trong một $32$-bit từ.Và tôi sẽ không mù quáng mở rộng nó sang các đại lượng khác được sử dụng trong mật mã và cũng được biểu thị ở dạng thập lục phân, chẳng hạn như số nguyên như được sử dụng trong RSA.