Trong các hệ thống blockchain, tính toàn vẹn của dữ liệu lịch sử được đảm bảo bằng cách băm nối tiếp (hash chaining): giá trị băm của khối sau phụ thuộc vào giá trị băm của khối liền trước, khiến việc sửa đổi một khối cũ làm thay đổi toàn bộ các khối phía sau.
Cho một chuỗi khởi tạo genesis và n khối dữ liệu d1,d2,…,dn (mỗi khối là một dòng văn bản, có thể là chuỗi rỗng). Định nghĩa dãy băm SHA-256 (biểu diễn dạng hex, chữ thường) như sau:
h0=SHA256(genesis) hi=SHA256(hi−1∥di),i=1,…,n
trong đó ∥ là phép nối chuỗi giữa chuỗi hex của hi−1 và chuỗi di (nối trực tiếp, không thêm ký tự phân cách).
Hãy tính hn — giá trị băm của khối cuối cùng trong chuỗi.
Ví dụ: Với genesis = "NEU" và n=0 (không có khối nào), kết quả chính là h0=SHA256("NEU").
Lưu ý: Nếu n=0, chỉ in ra h0.
genesis (có thể rỗng).In ra duy nhất một dòng: giá trị hn dạng chuỗi hex 64 ký tự thường.
Ví dụ:
Đầu vào:
1
a
Đầu ra:
f077eaefcc4ec4f1afbd07a79c7c3783f0420897151cfb79d1c8286d69867712
Đầu vào:
NEU
0
Đầu ra:
c8c6181904ce439b863ed171b55f759ba6c6f876d3e588f956b415c3f3e480aa
Đang tải editor...