Tuesday, July 30, 2013

Mã hoá text file với vim

Dành cho những bạn sử dụng Linux & muốn lưu trữ text file encrypted.

Kích hoạt và sử dụng encryption


* Gõ lệnh sau để kích hoạt việc mã hoá 1 text file
$ vim -x text-file-to-be-encrypted
Trong đó text-file-to-be-encrypted có thể là file mới hoặc file đã tồn tại.

 * Gõ encryption key 2 lần khi được hỏi: "Enter encryption key:" & "Enter same key again:".

* Biên tập text file như bình thường.

* Lưu ý là vim sẽ không hỏi có lưu file hay không (& có lưu việc mã hoá hay không) nếu như bạn không biên tập file (cho dù có kích hoạt hay điều chỉnh các thông tin encryption). Do đó, ngay sau khi kích hoạt encryption thì nên lưu lại:
:w
* Sau này mỗi khi biên tập file encrypted thì có thể gõ vim hay vim -x đều được.

* Lưu ý rằng nếu nhập không đúng password, thì vim vẫn mở file, nhưng nội dung sẽ ra "giun dế". Xem nội dung file thử nghiệm ở mục dưới.

Các chế độ encryption và cách điều chỉnh


Vim 7.2 hỗ trợ PkZip/zip encrypted nhưng vim 7.3 hỗ trợ thêm thuật toán blowfish và dùng zip là thuật toán mặc định để tương thích ngược với vim 7.2.

Để điều chỉnh thuật toán thì sử dụng lệnh:
:set cm=blowfish
Hoặc
:set cm=zip
Lưu ý việc :set cm chỉ hoạt động với vim 7.3+ (do 7.2 chỉ hỗ trợ zip).

Để xác định thuật toán đang sử dụng:
:set cm?
Tuy nhiên bạn không thể nhìn thấy encryption key với lệnh :set key? nhưng có thể xác định text file hiện tại có được encrypted hay không với lệnh này.

Để vô hiệu hoá việc encryption:
:set key=
(nghĩa là không có encryption key)

Sau khi chỉnh thì luôn lưu ý phải lưu thay đổi (:w).

Để thay đổi encrytion key, ngoài việc sử dụng lệnh :set key=new-key (new-key là do bạn chọn), thì có thể sử dụng tuỳ chọn vim +X. Tuy nhiên không nên sử dụng tham số +X, vì nếu nhập sai key ban đầu, thì vim sẽ giải mã ra "giun dế", dẫn đến việc mất toàn bộ nội dung text file. Ví dụ với text file thử nghiệm có nội dung:
123
456
được mã hoá với key=123 & cm=blowfish. Khi giải mã và đổi key mới nhưng nhập key=12345 thì được nội dung mới sau:
áÁ*½I:C]
Và với key=123456 thì có nội dung:
_«<86>^Y¯zôi
Do đó thay thế key thì nên dùng lệnh bên trong vim (:set key=new-key).

Done./.