Tôi thích sử dụng openssl
tiện ích này vì nó có vẻ khá phổ biến.
Chuyển đổi khóa công khai RSA và khóa riêng sang định dạng PEM:
$ openssl rsa -in ~/.ssh/id_rsa -outform pem > id_rsa.pem
$ openssl rsa -in ~/.ssh/id_rsa -pubout -outform pem > id_rsa.pub.pem
Mã hóa một tệp bằng khóa công khai của bạn:
$ openssl rsautl -encrypt -pubin -inkey id_rsa.pub.pem -in file.txt -out file.enc
Giải mã tập tin bằng khóa riêng của bạn:
$ openssl rsautl -decrypt -inkey id_rsa.pem -in file.enc -out file.txt
Nhưng, như Gilles đã nhận xét ở trên, điều này chỉ phù hợp để mã hóa các tệp nhỏ hơn khóa chung của bạn, vì vậy bạn có thể làm một cái gì đó như thế này:
Tạo mật khẩu, mã hóa tệp với nó một cách đối xứng và mã hóa mật khẩu với công khai của bạn, khóa lưu nó vào tệp:
$ openssl rand 64 |
tee >(openssl enc -aes-256-cbc -pass stdin -in file.txt -out file.enc) |
openssl rsautl -encrypt -pubin -inkey id_rsa.pub.pem -out file.enc.key
Giải mã cụm mật khẩu bằng khóa riêng của bạn và sử dụng nó để giải mã tệp:
$ openssl rsautl -decrypt -inkey id_rsa.pem -in file.enc.key |
openssl enc -aes-256-cbc -pass stdin -d -in file.enc -out file.txt
Bạn sẽ kết thúc với hai tệp, tệp được mã hóa và cụm mật khẩu được mã hóa của bạn, nhưng đặt vào một tập lệnh, nó sẽ hoạt động tốt.
Bạn thậm chí có thể thêm một tar cvf file file.enc file.enc.key
để dọn dẹp.
Tối ưu, bạn sẽ tối đa hóa kích thước của cụm mật khẩu cũng như thay đổi rand 64
kích thước của khóa công khai.