Thu khóa mã

Một phần của tài liệu Thám mật khẩu các file word (Trang 56)

Khóa mã cho Mã hóa RC4 Văn bản Office được sinh theo phương thức sau: Cho H() là thuật toán băm MD5, Hn là dữ liệu băm của lần lặp thứ n, và dấu "+" thể hiện sự móc nối. Mật khẩu phải được cung cấp như một chuỗi các ký tự Unicode.

Giới hạn độ dài mật khẩu và các ký tự dùng cho mật khẩu phụ thuộc việc thực hiện. Trừ khi có quy định khác, độ dài mật khẩu tối đa phải là 255 ký tự Unicode.

Băm mật khẩu ban đầu được sinh như sau: H0 = H(password)

Salt phải được sinh một cách ngẫu nhiên và phải có kích thước 16 byte. Salt phải được lưu trong trường Salt của cấu trúc Header Mã hóa RC4. Sau đó băm được tính bằng kỹ thuật sau:

1.Cho TruncatedHash là 5 byte đầu tiên của H0. 2.Cho IntermediateBuffer là bộ đệm 226 byte.

3.Thiết lập một bộ đệm 21 byte bằng cách móc nối TruncatedHash và salt. Khởi tạo IntermediateBuffer bằng cách sao chép bộ đệm 21 byte vào trong IntermediateBuffer tổng cộng 16 lần.

4.Dùng như sau: H1 = H(IntermediateBuffer).

Sau khi thu được băm cuối cùng, khóa mã phải được sinh bằng cách sử dụng 5 byte đầu tiên của dữ liệu băm cuối cùng và số của block mà được cung cấp bởi ứng dụng. Thuật toán mã hóa phải là RC4. Phương thức được dùng để sinh dữ liệu băm là đầu vào cho thuật toán dò khóa như sau:

- Cho TruncatedHash là 5 byte đầu tiên của H1. - Dùng như sau: Hfinal = H(TruncatedHash + block)

Số của block phải là giá trị không dấu 32 bit được cung cấp bởi ứng dụng. 128 bit đầu tiên của Hfinal phải được dùng như khóa mã đã dò được.

Một phần của tài liệu Thám mật khẩu các file word (Trang 56)