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

Các khóa con được tạo ra trong thuật toán Blowfish như thế nào?

Blowfish là một thuật toán mật mã khối đối xứng được phát minh bởi Brute Schneier vào tháng 12 năm 1993. Blowfish là một thay thế của DES hoặc IDEA. Một trong những mật mã mạng feistel phổ biến nhất là Blowfish. Thuật toán Blowfish có kích thước khối 64 bit và độ dài khóa thay đổi từ 42 bit đến 448 bit. Thuật toán bao gồm phần mở rộng khóa và phần mã hóa dữ liệu.

Blowfish tạo khóa nhiều nhất 448 bit thành một số mảng khóa con với tổng số là 1042 giá trị 32 bit hoặc 4168 byte. Đây là một hệ thống chắn bùn 16 vòng, hỗ trợ các hộp S phụ thuộc vào phím rất cao và cho phép 16 lần lặp.

Mỗi vòng đều được điều chỉnh với sự thay thế phụ thuộc vào khóa và dữ liệu và hoán vị phụ thuộc vào khóa. Các từ 32-bit và các phép toán XOR được thực hiện bằng các phép bổ sung. Có một mảng P và bốn hộp S 32 bit.

Mảng P bao gồm 18 khóa phụ 32 bit, trong khi mỗi S-box bao gồm 256 mục nhập. Đầu vào là phần tử dữ liệu 64 bit. Quá trình tạo khóa phụ như sau -

  • Blowfish tạo ra việc sử dụng một số lượng rất lớn các khóa con. Các khóa này phải có trước khi mã hóa và giải mã xuất hiện. Trường kích thước khóa từ 32 bit đến 488 bit. Nói cách khác, kích thước khóa nằm trong khoảng từ 1 đến 14 từ, mỗi từ bao gồm một loạt 32 bit. Các khóa này được lưu trong một mảng như sau -

    K1, K2,… .Kn trong đó 1 ≤ n ≤ 14

  • Khái niệm về mảng P bao gồm các khóa con 18, 32-bit -

    P1, P2, …………., P18.

    Việc tạo mảng P được mô tả sau đó.

  • Có bốn S-Box 32-bit bao gồm 256 mục nhập mỗi hộp -

    S1, 0, S1, 1… S1, 255

    S2, 0, S2, 1… S2, 255

    S3, 0, S3, 1… S3, 255

    S4, 0, S4, 1… S4, 255

    Việc tạo mảng P được định nghĩa sau đó.

  • Nó có thể khởi tạo mảng P trước, sau đó là bốn hộp chữ S, với một chuỗi cố định.

  • Mảng P và bốn hộp S được biểu thị dưới dạng các chữ số thập lục phân của Pi.

  • Nó có thể triển khai các hoạt động XOR theo từng bit của mảng P và với mảng K sử dụng lại từ khóa từ mảng K được yêu cầu với các bit khóa (tức là P1 XOR (ba mươi hai bit khóa), P2 XOR (ba mươi hai bit khóa).

  • Nó có thể mã hóa khối 64 bit và sử dụng quy trình mã hóa sau để mã hóa tất cả các số không với các mảng P và S.

  • Nó có thể tạo vị trí của p1 và p2 với đầu ra mã hóa và đầu ra mới được đặt tên là p1 và p2.

  • Nó có thể mã hóa đầu ra của bước 3 bằng cách sử dụng hộp P và hộp S hiện tại và transformp3 và p4 với kết quả là văn bản được mã hóa và đầu ra mới được gọi là p3 và p4.

  • Nó có thể lặp lại các bước sau cho đến khi có thể thu được tất cả các phần tử của mảng P tức là P1, P2.