Computer >> Máy Tính >  >> Lập trình >> Lập trình

Thuật toán băm an toàn hoạt động như thế nào?

Thuật toán băm an toàn (SHA) được phát minh bởi Cơ quan An ninh Quốc gia (NSA) và được xuất bản vào năm 1993 thông qua Viện Tiêu chuẩn và Công nghệ Quốc gia (NIST) như một Tiêu chuẩn Xử lý Thông tin Liên bang Hoa Kỳ (FIPS PUB 180).

SHA phụ thuộc và chia sẻ các khối xây dựng tương tự như thuật toán MD4. Thiết kế của SHA đã giới thiệu một quy trình mới phát triển đầu vào khối tin nhắn 16 từ cho chức năng nén thành khối 80 từ giữa những thứ khác.

Quá trình xử lý SHA hoạt động như sau -

Bước 1 - Nối các bit đệm - Tin nhắn gốc được đệm và thời lượng của nó tương ứng với 448 modulo 512. Phần đệm được chèn liên tục mặc dù tin nhắn đã có độ dài mong muốn. Phần đệm bao gồm một số 1 duy nhất theo sau là số bit thiết yếu là 0.

Bước 2 - Chiều dài nối - Một khối 64-bit được coi là số nguyên 64-bit không dấu (byte quan trọng nhất đầu tiên) và xác định độ dài của thông báo gốc (trước khi đệm ở bước 1), được thêm vào thông báo. Độ dài của tin nhắn hoàn chỉnh là bội số của 512.

Bước 3 - Khởi tạo bộ đệm - Bộ đệm bao gồm năm (5) thanh ghi 32 bit, mỗi thanh ghi được chỉ định bởi A, B, C, D và E. Bộ đệm 160 bit này có thể được sử dụng để ảnh hưởng đến kết quả tạm thời và cuối cùng của chức năng nén. Năm thanh ghi này được khởi tạo thành các số nguyên 32 bit sau (ở ký hiệu thập lục phân).

A =67 45 23 01

B =ef cd ab 89

C =98 ba dc fe

D =10 32 54 76

E =c3 d2 e1 f0

Các thanh ghi A, B, C và D thực sự giống như bốn thanh ghi được sử dụng trong thuật toán MD5. Nhưng trong SHA-1, các giá trị này được lưu ở định dạng big-endian, định dạng này xác định rằng byte quan trọng nhất của từ nằm ở vị trí byte địa chỉ thấp. Do đó, các giá trị khởi tạo (trong ký hiệu thập lục phân) xảy ra như sau -

word A =67 45 23 01

word B =ef cd ab 89

word C =98 ba dc fe

word D =10 32 54 76

word E =c3 d2 e1 f0

Bước 4 - Xử lý thông báo trong các khối 512 bit - Chức năng nén được chia thành 20 bước tuần tự bao gồm bốn vòng xử lý trong đó mỗi vòng được tạo thành 20 bước.

Bốn vòng có cấu trúc giống nhau với điểm khác biệt duy nhất là mỗi vòng cần một hàm Boolean khác nhau, nó có thể xác định là f1, f2, f3, f4 và một trong bốn hằng số cộng Kt (0 ≤t ≤79) mà dựa trên bước đang xem xét.

Bước 5 - Đầu ra - Sau khi xử lý t khối thông báo 512 bit cuối cùng (coi như thông báo được chia thành t khối 512 bit), và nó có thể nhận được thông báo tổng hợp 160 bit.