Bài viết này sẽ hướng dẫn các bạn mã hóa, giải mã và bảo vệ bằng mật khẩu với tập tin trên hệ điều hành Linux. Trong bài viết này sẽ giới thiệu với các bạn các công cụ giúp chúng ta có thể mã hóa cũng như cách nén file trên bản phân phối CentOS 7 từ đó giúp cho chúng ta có thể tự tìm hiểu và tự học Linux cơ bản một cách dễ dàng hơn.
1. Mã hóa bằng GnuPG
1.1. Giới thiệu và cài đặt GnuPG
GnuPG (GNU Privacy Guard) hay còn gọi GPG nó chính là công cụ cơ bản giúp cho chúng ta có thể mã hóa trên hệ điều hành Linux. Được viết bởi GNU Project bằng ngôn ngữ lập trình C. Nó cung cấp mã hóa, giải mã, chữ ký số và ký tên.
Nếu gói gnupg
không có trên hệ thống của bạn, bạn có thể dễ dàng cài đặt như sau:
Đối với bản phân phối Debian/Ubuntu:
Chạy lệnh sau để cài đặt gói
gnupg
:root@ubuntuserver:~# apt-get install gnupg Reading package lists... Done Building dependency tree Reading state information... Done ...
Đối với bản phân phối RHEL/CentOS:
Chạy lệnh bên dưới để thực hiện cài đặt gói
gnupg
:[root@localhost ~]# yum -y install gnupg Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile epel/x86_64/metalink | 5.6 kB 00:00:00 * base: centos-hcm.viettelidc.com.vn * epel: hkg.mirror.rackspace.com * extras: centos-hcm.viettelidc.com.vn * updates: centos-hcm.viettelidc.com.vn base | 3.6 kB 00:00:00 epel | 5.4 kB 00:00:00 extras | 2.9 kB 00:00:00 updates | 2.9 kB 00:00:00 ...
Sau khi cài đặt chúng ta chạy lệnh sau để xem version của gnupg
hiện tại:
[root@localhost ~]# gpg --version
gpg (GnuPG) 2.0.22
libgcrypt 1.5.3
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Home: ~/.gnupg
Supported algorithms:
Pubkey: RSA, ?, ?, ELG, DSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2
Qua kết quả trên cho chúng ta biết các toán thuật toán mà gnupg
hổ trợ mã hóa chính là IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256
.
1.2. Sử dụng GnuPG
Bước 1: Chúng ta thực hiện tạo một tệp test.txt
như bên dưới và thực hiện xem nội dung của tệp test.txt
như sau:
[root@localhost ~]# echo "Hello blogd.net" > test.txt
[root@localhost ~]# cat test.txt
Hello blogd.net
Bước 2: Tiếp theo chúng ta thực hiện mã hóa tệp test.txt
bằng gpg
cùng với tùy chọn -c
:
[root@localhost ~]# gpg -c test.txt
gpg: directory `/root/.gnupg' created
gpg: new configuration file `/root/.gnupg/gpg.conf' created
gpg: WARNING: options in `/root/.gnupg/gpg.conf' are not yet active during this run
gpg: keyring `/root/.gnupg/pubring.gpg' created
Trong quá trình mã hóa thì gpg sẽ yêu cầu chúng ta nhập mật khẩu:
Lưu ý: Nhập mật khẩu 2 lần để mã hóa tệp. Mã hóa trên được thực hiện thao mặc định với thuật toán
CAST5
. Chúng ta có thể chỉ định thuật toán khác.
Kết quả sau khi tạo mã hóa xong thì sẽ xuất hiện một tệp test.txt.gpg
như sau:
[root@localhost ~]# ls -l
total 8
-rw-r--r--. 1 root root 16 Sep 25 11:20 test.txt
-rw-r--r--. 1 root root 63 Sep 25 11:23 test.txt.gpg
Khi chúng ta muốn xem nội dung tệp mã hóa hiện tại khi chưa giải mã thì không thể:
[root@localhost ~]# cat test.txt.gpg
Qh��D���.2�m�&Y<��1(�isߗ�6B��y�0y� ~=5)]�}���/[root@localhost ~]#
Bây giờ, chúng ta muốn giải mã tệp được mã hóa ở trên, chúng ta sử dụng lệnh gpg
như sau. Để kiểm tra chính sác chúng ta thực hiện xóa tệp gốc trước khi giải mã và để lại tệp được mã hóa test.txt.gpg
thực hiện như bên dưới:
[root@localhost ~]# rm -rf test.txt
[root@localhost ~]# ls -l
total 4
-rw-r--r--. 1 root root 63 Sep 25 11:23 test.txt.gp
[root@localhost ~]# gpg test.txt.gpg
gpg: CAST5 encrypted data
gpg: encrypted with 1 passphrase
File `test.txt' exists. Overwrite? (y/N) y
gpg: WARNING: message was not integrity protected
[root@localhost ~]# cat test.txt
Hello blogd.net
Sau khi giải mã thành công chúng ta có thể đọc nội dung tệp và nội dung tệp hoàn toàn giống với nội dung tệp gốc mà chúng ta đã xóa đi.
Lưu ý: Chúng ta cần cung cấp cùng một mật khẩu chúng ta đã cung cấp khi mã hóa để giải mã khi được nhắc.
2. Mã hóa bằng bcrypt
2.1. Giới thiệu và cài đặt bcrypt
bcrypt
là một công cụ mã hóa và giải mã các tập tin bằng thuật toán Blowfish. Các tệp được mã hóa sẽ được lưu với phần mở rộng là .bfe. Theo mặc định, bcrypt
sẽ nén các tệp đầu vào trước khi mã hóa, xóa các tệp đầu vào và ghi đè lên các tệp đầu vào với dữ liệu ngẫu nhiên để ngăn phục hồi dữ liệu.
Mã hóa bằng thuật toán blowfish không được khuyến khích kể từ thời điểm người ta nghĩ rằng thuật toán mật mã có thể bị tấn công.
Nếu gói bcrypt
không có trên hệ thống của bạn, bạn có thể dễ dàng cài đặt như sau:
Đối với bản phân phối Debian/Ubuntu:
Chạy lệnh sau để cài đặt gói
bcrypt
:root@ubuntuserver:~# apt-get install bcrypt Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libbrotli1 libjansson4 liblua5.2-0 ssl-cert Use 'apt autoremove' to remove them. The following NEW packages will be installed: bcrypt ...
Đối với bản phân phối RHEL/CentOS:
Chạy lệnh bên dưới để thực hiện cài đặt gói
bcrypt
:[root@localhost ~]# yum -y install bcrypt Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: centos-hcm.viettelidc.com.vn * epel: hkg.mirror.rackspace.com * extras: centos-hcm.viettelidc.com.vn * updates: centos-hcm.viettelidc.com.vn Resolving Dependencies --> Running transaction check ---> Package bcrypt.x86_64 0:1.1-14.el7 will be installed --> Finished Dependency Resolution ...
2.2. Sử dụng bcrypt
Bước 1: Thực hiện tạo tệp test-bcrypt.txt
và xem nội dung tệp như bên dưới:
[root@localhost ~]# echo "Hello Blogd.net" > test-bcrypt.txt
[root@localhost ~]# cat test-bcrypt.txt
Hello Blogd.net
[root@localhost ~]# ls -l
total 4
-rw-r--r--. 1 root root 16 Sep 30 21:09 test-bcrypt.txt
Bước 2: Chúng ta mã hóa tệp bằng cách sử dụng lệnh bcrypt
. Trong quá trình mã hóa chúng ta cần thực hiện nhập mật khẩu 2 lần:
[root@localhost ~]# bcrypt test-bcrypt.txt
Encryption key:Key must be at least 8 characters
Encryption key:
Again:
Sau khi mã hóa tệp thành công thì sẽ xuất hiện một tệp mới có tên test-bcrypt.txt.bfe được tạo từ tệp gốc và sẽ thay thế tệp gốc:
[root@localhost ~]# ls -l
total 4
-rw-r--r--. 1 root root 86 Sep 30 21:09 test-bcrypt.txt.bfe
Khi chúng ta muốn xem nội dung của tệp đã bị mã hóa thì chúng ta không thể đọc được nội dung:
[root@localhost ~]# cat test-bcrypt.txt.bfe
���C�������q�'f:2[
�T�2K�x�.�T��+|��|��
;�K���A0�z�ژ{�&[bB��[root@localhost ~]#
Để có thể xem nội dung tệp chúng ta cần thực hiện giải mã tệp đã bị mã hóa. Trong quá trình giải mã chúng ta cần nhập đúng mật khẩu với mật khẩu đã tạo mã hóa ban đầu:
[root@localhost ~]# bcrypt test-bcrypt.txt.bfe
Encryption key:
Invalid encryption key for file: test-bcrypt.txt.bfe
Sau khi chạy lệnh bên trên thì tệp test-bcrypt.txt
đã xuất hiện và thay thế tệp test-bcrypt.txt.bfe
và chúng ta có thể xem nội dung tệp cách bình thường như bên dưới:
[root@localhost ~]# ls -l
total 4
-rw-r--r--. 1 root root 16 Sep 30 21:10 test-bcrypt.txt
[root@localhost ~]# cat test-bcrypt.txt
Hello Blogd.net
3. Mã hóa bằng ccrypt
3.1. Giới thiệu và cài đặt ccrypt
ccrypt
là một tiện ích để mã hóa và giải mã các tập tin. Nó dựa trên thuật toán Rijndael cypher. Mã hóa một tập tin bằng cách sử dụng ccrypt
. Nó sử dụng ccencrypt
để mã hóa và ccdecrypt
để giải mã.
Nếu gói ccrypt
không có trên hệ thống của bạn, bạn có thể dễ dàng cài đặt như sau:
Đối với bản phân phối Debian/Ubuntu:
Chạy lệnh sau để cài đặt gói
ccrypt
:root@ubuntuserver:~# apt-get install ccrypt Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libbrotli1 libjansson4 liblua5.2-0 ssl-cert Use 'apt autoremove' to remove them. Suggested packages: elpa-ps-ccrypt The following NEW packages will be installed: ccrypt ...
Đối với bản phân phối RHEL/CentOS:
Chạy lệnh bên dưới để thực hiện cài đặt gói
ccrypt
:[root@localhost ~]# yum -y install ccrypt Loaded plugins: fastestmirror Determining fastest mirrors epel/x86_64/metalink | 6.2 kB 00:00:00 * base: mirrors.123host.vn * centos-sclo-rh: mirrors.123host.vn * centos-sclo-sclo: mirrors.123host.vn * epel: my.fedora.ipserverone.com * extras: mirrors.viethosting.com * updates: mirrors.viethosting.com base | 3.6 kB 00:00:00 ...
3.2. Sử dụng ccrypt
Bước 1: Chúng ta thực hiện tạo một tệp test-ccrypt.txt
như bên dưới và thực hiện xem nội dung của tệp test-ccrypt.txt
như sau:
[root@localhost ~]# echo "Hello Blogd.net" > test-ccrypt.txt
[root@localhost ~]# cat test-ccrypt.txt
Hello Blogd.net
[root@localhost ~]# ls -l
total 4
-rw-r--r--. 1 root root 16 Sep 30 21:26 test-ccrypt.txt
Bước 2: Thực hiện mã hóa tệp test-ccrypt.txt
khi mã hóa chúng ta cần sử dụng lệnh ccencrypt
sau đó nhập mật khẩu 2 lần để mã hóa thành công và sau khi mã hóa thành công thì tệp test-ccrypt.txt
được thay thế bằng tệp test-ccrypt.txt.cpt
:
[root@localhost ~]# ccencrypt test-ccrypt.txt
Enter encryption key:
Enter encryption key: (repeat)
[root@localhost ~]# ls -l
total 4
-rw-r--r--. 1 root root 48 Sep 30 21:26 test-ccrypt.txt.cpt
Sau khi mã hóa thành công chúng ta không thể xem nội dung tệp:
[root@localhost ~]# cat test-ccrypt.txt.cpt
�Sp��Z�ꀒV�]���lU�UBC�tٕ�n㗸<��j�OÖ�)Ɛ[root@localhost ~]#
Để có thể xem nội dung tệp chúng ta cần thực thi lệnh ccdecrypt
để giải mã tệp test-ccrypt.txt.cpt
khi giải mã chúng ta cần nhập đúng mật khẩu mà chúng ta đã tạo trong quá trình mã hóa:
[root@localhost ~]# ccdecrypt test-ccrypt.txt.cpt
Enter decryption key:
[root@localhost ~]# ls -l
total 4
-rw-r--r--. 1 root root 16 Sep 30 21:26 test-ccrypt.txt
[root@localhost ~]# cat test-ccrypt.txt
Hello Blogd.net
4. Mã hóa bằng zip
4.1. Giới thiệu và cài đặt zip
ZIP là một trong những định dạng lưu trữ hỗ trợ nén dữ liệu không mất dữ liệu. Một tệp ZIP có thể chứa một hoặc nhiều tệp hoặc thư mục có thể đã được nén. Định dạng tệp ZIP cho phép sử dụng thuật toán mật mã dòng pkzip.
Nếu gói zip
không có trên hệ thống của bạn, bạn có thể dễ dàng cài đặt như sau:
Đối với bản phân phối Debian/Ubuntu:
Chạy lệnh sau để cài đặt gói
zip
:root@ubuntuserver:~# apt-get install zip Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libbrotli1 libjansson4 liblua5.2-0 ssl-cert Use 'apt autoremove' to remove them. The following additional packages will be installed: unzip The following NEW packages will be installed: unzip zip ...
Đối với bản phân phối RHEL/CentOS:
Chạy lệnh bên dưới để thực hiện cài đặt gói
zip
:[root@localhost ~]# yum -y install zip Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.123host.vn * centos-sclo-rh: mirrors.123host.vn * centos-sclo-sclo: mirrors.123host.vn * epel: my.fedora.ipserverone.com * extras: mirrors.viethosting.com * updates: mirrors.viethosting.com ...
4.2. Sử dụng zip để đặt mật khẩu
Bước 1: Đầu tiên chúng ta thực hiện tạo 3 tệp như bên dưới:
[root@localhost ~]# echo "Hello Blogd.net test zip password 1." > test-zip-1.txt
[root@localhost ~]# echo "Hello Blogd.net test zip password 2." > test-zip-2.txt
[root@localhost ~]# echo "Hello Blogd.net test zip password 3." > test-zip-3.txt
[root@localhost ~]# ls -l
total 12
-rw-r--r--. 1 root root 37 Sep 30 21:54 test-zip-1.txt
-rw-r--r--. 1 root root 37 Sep 30 21:54 test-zip-2.txt
-rw-r--r--. 1 root root 37 Sep 30 21:54 test-zip-3.txt
Bước 2: Sau khi thực hiện tạo 3 tệp như trên chúng ta tạo một thư mục zip được mã hóa chứa cả 3 tệp này bằng cách sử dụng lệnh zip
kết hợp với tùy chọn --password
như sau:
[root@localhost ~]# zip --password blogdpassword test-blogd.zip test-zip-1.txt test-zip-2.txt test-zip-3.txt
adding: test-zip-1.txt (stored 0%)
adding: test-zip-2.txt (stored 0%)
adding: test-zip-3.txt (stored 0%)
[root@localhost ~]# ls -l
total 16
-rw-r--r--. 1 root root 685 Sep 30 23:18 test-blogd.zip
-rw-r--r--. 1 root root 37 Sep 30 21:54 test-zip-1.txt
-rw-r--r--. 1 root root 37 Sep 30 21:54 test-zip-2.txt
-rw-r--r--. 1 root root 37 Sep 30 21:54 test-zip-3.txt
Ở đây blogdpassword
là mật khẩu được sử dụng để mã hóa cho thư mục chúng ta cần mã hóa. Một thư mục được tạo với tên test-blogd.zip
với các tệp được nén bên trong là test-zip-1.txt, test-zip-2.txt, test-zip-3.txt.
Khi chúng ta muốn giải mã mật khẩu được nén thì sử dụng lệnh unzip
sau đó nhập mật khẩu chúng ta đã tạo trong quá trình nén. Để kiểm chứng điều này chúng ta sẽ copy thư mục đã nén sang /opt/
sau đó thực thi lệnh unzip
. Khi giải nén thành công chúng ta thấy có 3 tệp test-zip-1.txt, test-zip-2.txt, test-zip-3.txt.
[root@localhost ~]# cp test-blogd.zip /opt/
[root@localhost ~]# cd /opt/
[root@localhost opt]# ls -l
total 4
-rw-r--r--. 1 root root 685 Sep 30 23:21 test-blogd.zip
[root@localhost opt]# unzip test-blogd.zip
Archive: test-blogd.zip
[test-blogd.zip] test-zip-1.txt password:
extracting: test-zip-1.txt
extracting: test-zip-2.txt
extracting: test-zip-3.txt
[root@localhost opt]# ls -l
total 16
-rw-r--r--. 1 root root 685 Sep 30 23:21 test-blogd.zip
-rw-r--r--. 1 root root 37 Sep 30 21:54 test-zip-1.txt
-rw-r--r--. 1 root root 37 Sep 30 21:54 test-zip-2.txt
-rw-r--r--. 1 root root 37 Sep 30 21:54 test-zip-3.txt
5. Mã hóa bằng openssl
5.1. Giới thiệu và cài đặt openssl
OpenSSL
là một công cụ thực hiện các chức năng mã hóa dòng lệnh có thể được sử dụng để mã hóa tin nhắn cũng như các tập tin với tiêu chuẩn giao thức mã hóa của SSL và TLS.
Nếu gói openssl
không có trên hệ thống của bạn, bạn có thể dễ dàng cài đặt như sau:
Đối với bản phân phối Debian/Ubuntu:
Chạy lệnh sau để cài đặt gói
openssl
:root@ubuntuserver:~# apt-get install openssl Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libbrotli1 libjansson4 liblua5.2-0 ssl-cert Use 'apt autoremove' to remove them. The following packages will be upgraded: openssl ...
Đối với bản phân phối RHEL/CentOS:
Chạy lệnh bên dưới để thực hiện cài đặt gói
openssl
:[root@localhost opt]# yum -y install openssl Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.123host.vn * centos-sclo-rh: mirrors.123host.vn * centos-sclo-sclo: mirrors.123host.vn * epel: my.fedora.ipserverone.com * extras: mirrors.viethosting.com * updates: mirrors.viethosting.com Resolving Dependencies --> Running transaction check ---> Package openssl.x86_64 1:1.0.2k-16.el7_6.1 will be updated ...
5.2. Sử dụng openssl
Bước 1: Chúng ta thực hiện tạo một tệp có tên test-openssl.txt
và xem nội dung tệp như sau:
[root@localhost ~]# echo "Hello blogd.net" > test-openssl.txt
[root@localhost ~]# cat test-openssl.txt
Hello blogd.net
Bước 2: Sau khi tạo tệp chúng ta thực hiện mã hóa tệp đã tạo trong quá trình tạo mã hóa chúng ta cần nhập mật khẩu 2 lần:
[root@localhost ~]# openssl enc -aes-256-cbc -in test-openssl.txt -out test.openssl.dat
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
[root@localhost ~]# ls -l
total 8
-rw-r--r--. 1 root root 48 Sep 30 23:27 test.openssl.dat
-rw-r--r--. 1 root root 16 Sep 30 23:25 test-openssl.txt
Trong đó các tùy chọn có ý nghĩa như sau:
enc
: mã hóa.-aes-256-cbc
: thuật toán được sử dụng.-in
: đường dẫn đầy đủ của tệp sẽ được mã hóa.-out
: đường dẫn đầy đủ nơi nó sẽ được giải mã.
Tệp sau khi được mã hóa chúng ta sẽ không thể xem nội dung tệp được:
[root@localhost ~]# cat test.openssl.dat
Salted__��ao70n�Q��nD��]�)oݪ�T��+u��(�v'K[root@localhost ~]#
Bây giờ, chúng ta muốn giải mã tệp được mã hóa ở trên, chúng ta sử dụng lệnh openssl
như sau. Để kiểm tra chính sác chúng ta thực hiện xóa tệp gốc trước khi giải mã và để lại tệp được mã hóa test.openssl.dat
thực hiện như bên dưới:
[root@localhost ~]# rm -rf test-openssl.txt
[root@localhost ~]# ls -l
total 4
-rw-r--r--. 1 root root 48 Sep 30 23:27 test.openssl.dat
[root@localhost ~]# openssl enc -aes-256-cbc -d -in test.openssl.dat -out test-openssl-2.txt
enter aes-256-cbc decryption password:
[root@localhost ~]# ls -l
total 8
-rw-r--r--. 1 root root 48 Sep 30 23:27 test.openssl.dat
-rw-r--r--. 1 root root 16 Sep 30 23:28 test-openssl-2.txt
[root@localhost ~]# cat test-openssl-2.txt
Hello blogd.net
Khi giải mã chúng ta cần nhập đúng mật khẩu mà chúng ta đã tạo trong quá trình mã hóa.
6. Mã hóa bằng p7zip-full
6.1. Giới thiệu và cài đặt p7zip-full
7-Zip là một trình lưu trữ tệp miễn phí mã nguồn mở rất nổi tiếng được viết bằng C++ và có thể nén và giải nén hầu hết các định dạng tệp lưu trữ đã biết. Nó có tỷ lệ nén cao ở định dạng 7z với nén LZMA và LZMA2 ngoài ra còn hỗ trợ nhiều định dạng lưu trữ khác như XZ, BZIP2, GZIP, TAR, ZIP... Nó cung cấp mã hóa AES-256 mạnh mẽ ở các định dạng 7z và ZIP. Nó cũng đi kèm với khả năng tự giải nén cho định dạng 7z.
Nếu gói p7zip-full
không có trên hệ thống của bạn, bạn có thể dễ dàng cài đặt như sau:
Đối với bản phân phối Debian/Ubuntu:
Chạy lệnh sau để cài đặt gói
p7zip-full
:root@ubuntuserver:~# apt-get install p7zip-full Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libbrotli1 libjansson4 liblua5.2-0 ssl-cert Use 'apt autoremove' to remove them. The following additional packages will be installed: p7zip Suggested packages: p7zip-rar ...
Đối với bản phân phối RHEL/CentOS:
Chạy lệnh bên dưới để thực hiện cài đặt gói
p7zip-full
:[root@localhost ~]# yum -y install p7zip-full Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.123host.vn * centos-sclo-rh: mirrors.123host.vn * centos-sclo-sclo: mirrors.123host.vn * epel: my.fedora.ipserverone.com * extras: mirrors.viethosting.com * updates: mirrors.viethosting.com ...
6.2. Sử dụng p7zip-full
Bước 1: Chúng ta cần tạo 3 tệp như sau:
[root@localhost ~]# echo " Hello Blogd.net test p7zip 1." > test-7zip-1.txt
[root@localhost ~]# echo " Hello Blogd.net test p7zip 2." > test-7zip-2.txt
[root@localhost ~]# echo " Hello Blogd.net test p7zip 3." > test-7zip-3.txt
[root@localhost ~]# ls -l
total 12
-rw-r--r--. 1 root root 31 Oct 1 21:52 test-7zip-1.txt
-rw-r--r--. 1 root root 31 Oct 1 21:52 test-7zip-2.txt
-rw-r--r--. 1 root root 31 Oct 1 21:52 test-7zip-3.txt
Bước 2: Sau khi tạo thành công 3 tệp như trên chúng ta tạo một thư mục zip được mã hóa chứa cả 3 tệp này bằng cách sử dụng lệnh 7za
kết hợp với tùy chọn -t
theo sau đó là tên định dạng, cho phép chúng ta chọn định dạng lưu trữ như zip, gzip, bzip2 hoặc tar
nếu không chọn thì mặt định sẽ là 7z
và tùy chọn -p
là cờ để thiết lập mật khẩu như bên dưới:
[root@localhost ~]# 7za a -tzip -p -mem=AES256 blogdtest-7zip.zip test-7zip-1.txt test-7zip-2.txt test-7zip-3.txt
7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,1 CPU Intel(R) Xeon(R) CPU L5630 @ 2.13GHz (206C2),ASM,AES-NI)
Scanning the drive:
3 files, 93 bytes (1 KiB)
Creating archive: blogdtest-7zip.zip
Items to compress: 3
Enter password (will not be echoed):
Verify password (will not be echoed) :
Files read from disk: 3
Archive size: 691 bytes (1 KiB)
Everything is Ok
[root@localhost ~]# ls -l
total 16
-rw-r--r--. 1 root root 691 Oct 1 21:56 blogdtest-7zip.zip
-rw-r--r--. 1 root root 31 Oct 1 21:52 test-7zip-1.txt
-rw-r--r--. 1 root root 31 Oct 1 21:52 test-7zip-2.txt
-rw-r--r--. 1 root root 31 Oct 1 21:52 test-7zip-3.txt
Ở đây trong quá trình tạo chúng ta cần nhập mật khẩu 2 lần như trên. Sau khi tạo thành công thì thư mục được tạo với tên blogdtest-7zip.zip
với các tệp được nén bên trong là test-7zip-1.txt, test-7zip-2.txt, test-7zip-3.txt.
Khi chúng ta muốn giải mã mật khẩu được nén thì sử dụng lệnh 7za
với tùy chọn e
sẽ trích xuất tệp lưu trữ trong thư mục làm việc hiện tại sau đó nhập mật khẩu chúng ta đã tạo trong quá trình nén. Để kiểm chứng điều này chúng ta sẽ copy thư mục đã nén sang /opt/
sau đó thực thi lệnh 7za
. Khi giải nén thành công chúng ta thấy có 3 tệp test-7zip-1.txt, test-7zip-2.txt, test-7zip-3.txt.
[root@localhost ~]# cp blogdtest-7zip.zip /opt/
[root@localhost ~]# cd /opt/
[root@localhost opt]# ls -l
total 4
-rw-r--r--. 1 root root 691 Oct 1 21:56 blogdtest-7zip.zip
[root@localhost opt]# 7za e blogdtest-7zip.zip
7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,1 CPU Intel(R) Xeon(R) CPU L5630 @ 2.13GHz (206C2),ASM,AES-NI)
Scanning the drive for archives:
1 file, 691 bytes (1 KiB)
Extracting archive: blogdtest-7zip.zip
--
Path = blogdtest-7zip.zip
Type = zip
Physical Size = 691
Enter password (will not be echoed):
Everything is Ok
Files: 3
Size: 93
Compressed: 691
[root@localhost opt]# ls -l
total 16
-rw-r--r--. 1 root root 691 Oct 1 21:56 blogdtest-7zip.zip
-rw-r--r--. 1 root root 31 Oct 1 21:52 test-7zip-1.txt
-rw-r--r--. 1 root root 31 Oct 1 21:52 test-7zip-2.txt
-rw-r--r--. 1 root root 31 Oct 1 21:52 test-7zip-3.txt
7. Lời kết
Qua bài trên, giúp cho chúng ta hiểu hơn về mã hóa, giải mã và bảo vệ bằng mật khẩu với tập tin trên hệ điều hành Linux. Ngoài ra, bài viết trên còn hổ trợ chúng ta trong việc đặt mật khẩu nén thư mục trên Linux cùng với việc sử dụng các công cụ mã hóa đa dạng.