Làm thế nào để zip thư mục với mã hóa cho tên tập tin?


17

Sử dụng dòng lệnh, tôi biết rằng tôi có thể mã hóa một thư mục bằng lệnh sau:

zip -er Directory.zip /path/to/directory

Tuy nhiên, điều này không mã hóa tên tập tin. Nếu ai đó chạy:

unzip Directory.zip

và liên tục nhập sai mật khẩu, lệnh giải nén sẽ lặp qua tất cả các tên tệp được chứa cho đến khi nhập đúng mật khẩu. Đầu ra mẫu:

unzip Directory.zip 
Archive:  Directory.zip
   creating: Directory/
[Directory.zip] Directory/sensitive-file-name-1 password: 
password incorrect--reenter: 
password incorrect--reenter: 
   skipping: Directory/sensitive-file-name-1  incorrect password
[Directory.zip] Directory/sensitive-file-name-2 password: 
password incorrect--reenter: 
password incorrect--reenter: 
   skipping: Directory/sensitive-file-name-2  incorrect password
[Directory.zip] Directory/sensitive-file-name-3 password: 
password incorrect--reenter: 
password incorrect--reenter: 
   skipping: Directory/sensitive-file-name-3  incorrect password

và như thế.

Sử dụng dòng lệnh, có cách nào để nén một thư mục bằng mã hóa đồng thời mã hóa hoặc ẩn tên tệp không?

Cảm ơn bạn.


Bạn có thể không muốn sử dụng mã hóa mặc định của zip vì nó yếu vì vậy hãy sử dụng 7zipvì nó sử dụng mã hóa dựa trên AES.
pierz

Mã hóa mặc định của zip là gì và nguồn của bạn để khẳng định rằng mã hóa mặc định của zip là không an toàn?
Leo Galleguillos 26/03/18

1
Hầu hết các công cụ zip (có một số công cụ zip mới hơn sử dụng tiền điện tử tốt hơn) vẫn sử dụng mật mã PKZIP Stream, lần đầu tiên được chứng minh là yếu vào năm 1994: rd.springer.com/content/pdf/10.1007%2F3-540-60590-8_12 .pdf Trang Wikipedia cung cấp một cái nhìn tổng quan cơ bản: en.wikipedia.org/wiki/Zip_(file_format)#Encoding
Pierz

Câu trả lời:


24

Trong tệp zip, chỉ nội dung tệp được mã hóa. Siêu dữ liệu tệp, bao gồm tên tệp, không được mã hóa. Đó là một hạn chế của định dạng tệp: mỗi mục được nén riêng và nếu được mã hóa, mã hóa riêng.

Bạn có thể sử dụng 7-zip thay thế. Nó hỗ trợ mã hóa siêu dữ liệu ( -mhe=onvới việc triển khai dòng lệnh Linux).

7z a -p -mhe=on Directory.7z /path/to/directory

Có 7zip triển khai cho tất cả các hệ điều hành chính và hầu hết các hệ điều hành nhỏ nhưng có thể yêu cầu cài đặt phần mềm bổ sung (IIRC Windows có thể giải nén các tệp zip được mã hóa khỏi hộp ngày nay). Nếu yêu cầu 7z để giải mã là một vấn đề, bạn chỉ có thể dựa vào zip bằng cách sử dụng nó để đóng gói thư mục trong một tệp duy nhất, sau đó mã hóa tệp đó. Nếu bạn làm điều đó, hãy tắt nén các tệp riêng lẻ và hướng dẫn zip bên ngoài để nén tệp zip, bạn sẽ có được tỷ lệ nén tốt hơn.

zip -0 -r Directory.zip /path/to/directory
zip -e -n : encrypted.zip Directory.zip

1
Có lẽ tốt nhất để tránh sử dụng zip để mã hóa - người ta có thể sử dụng 7zip để tạo tệp zip (AES) được mã hóa an toàn hơn trên dòng thứ 2:7z a -p -tzip encrypted.zip Directory.zip
Pierz

2

Bạn có thể tạo một kho lưu trữ bằng công cụ yêu thích của mình và sau đó sử dụng bcryptđể thực hiện mã hóa / giải mã.

A) Để tạo một tệp được mã hóa:

tar -czf Directory.tgz /path/to/directory
bcrypt Directory.tgz

Điều này sẽ cung cấp cho bạn một tập tin được mã hóa blowfish Directory.tgz

B) Để đảo ngược quá trình này:

bcrypt Directory.tgz.bfe
tar -xf Directory.tgz

2
Cách tiếp cận là tốt, nhưng bạn nên sử dụng một công cụ khác để mã hóa - bcryptsử dụng EBC cho thấy cấu trúc trong dữ liệu được mã hóa. Xem lỗi Debian # 700758 để biết chi tiết ( bcryptkết quả là Debian chỉ hỗ trợ giải mã).
Stephen Kitt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.