CoderTools

Công cụ mã hóa/giải mã Blowfish

Mã hóa khối đối xứng nhanh được thiết kế bởi Bruce Schneier

⚠️ Lưu ý bảo mật

Kích thước khối 64 bit của Blowfish có thể dễ bị tấn công sinh nhật với khối lượng dữ liệu lớn. Để bảo mật tối đa, hãy xem xét sử dụng AES-256 cho các dự án mới.

Độ dài khóa Blowfish: 4-56 byte (32-448 bit). Khuyến nghị: 16 byte (128 bit) trở lên
Tùy chọn định dạng

Về mã hóa Blowfish

Blowfish là mã hóa khối khóa đối xứng được thiết kế bởi Bruce Schneier năm 1993. Đây là một trong những mã hóa khối an toàn đầu tiên không bị ràng buộc bản quyền và miễn phí cho mọi người sử dụng.

Blowfish sử dụng kích thước khối 64 bit và hỗ trợ độ dài khóa biến đổi từ 32 bit đến 448 bit. Nó sử dụng cấu trúc mạng Feistel 16 vòng, làm cho nó vừa nhanh vừa an toàn.

Tính năng chính

  • Độ dài khóa biến đổi: 32 đến 448 bit (4 đến 56 byte), mang lại sự linh hoạt về bảo mật
  • Kích thước khối 64 bit: Xử lý dữ liệu theo khối 8 byte
  • Mạng Feistel 16 vòng: Cung cấp sự phân tán và xáo trộn mạnh mẽ
  • Mã hóa nhanh: Tối ưu hóa cho bộ xử lý 32 bit, nhanh hơn đáng kể so với DES

Các chế độ mã hóa

  • CBC: Mỗi khối văn bản thuần được XOR với khối mã hóa trước đó trước khi mã hóa. Yêu cầu IV, an toàn nhất.
  • ECB: Mỗi khối được mã hóa độc lập. Không cần IV, nhưng văn bản thuần giống nhau tạo ra văn bản mã hóa giống nhau.
  • CFB: Chuyển đổi mã hóa khối thành mã hóa dòng. Yêu cầu IV.
  • OFB: Chế độ phản hồi đầu ra, chuyển đổi mã hóa khối thành mã hóa dòng. Yêu cầu IV.

So sánh thuật toán

Thuật toán Độ dài khóa Kích thước khối Bảo mật Tốc độ
Blowfish 32-448 bit 64 bits Tốt Nhanh
AES 128/192/256 bits 128 bits Xuất sắc Nhanh
DES 56 bits 64 bits Yếu Nhanh
3DES 112/168 bits 64 bits Trung bình Chậm

Lưu ý về bảo mật

  • Kích thước khối 64 bit của Blowfish làm cho nó dễ bị tấn công sinh nhật khi mã hóa lượng lớn dữ liệu (>32GB) với cùng một khóa.
  • Đối với các dự án mới yêu cầu bảo mật tối đa, hãy xem xét sử dụng AES hoặc Twofish, người kế nhiệm của Blowfish.
  • Luôn sử dụng chế độ CBC hoặc các chế độ chuỗi khác thay vì ECB để bảo mật tốt hơn.
  • Sử dụng IV duy nhất cho mỗi thao tác mã hóa với cùng một khóa.

Trường hợp sử dụng

  • Băm mật khẩu: bcrypt dựa trên Blowfish và được sử dụng rộng rãi để lưu trữ mật khẩu
  • Mã hóa tệp: Phù hợp để mã hóa các tệp riêng lẻ và tệp nén
  • VPN và truyền thông an toàn: Được sử dụng trong OpenVPN và các giao thức bảo mật khác
  • Tương thích hệ thống cũ: Duy trì tương thích với các hệ thống sử dụng Blowfish

Tài liệu tham khảo