2012-07-02 41 views
6

Câu chuyện dài ngắn, câu hỏi của tôi là: Làm cách nào để buộc GnuPG sử dụng khóa riêng/khóa công khai khi mã hóa/giải mã tệp?GnuPG: Làm thế nào để mã hóa/giải mã các tệp bằng một khóa nhất định?


Một số lời giải thích/Dài câu chuyện

Tôi có một ứng dụng phải mã hóa tập tin trước khi gửi chúng đến S3.

Người dùng có thể tải xuống tệp của họ bằng trình duyệt của họ từ trang web của tôi, trong trường hợp đó trước tiên, tôi phải giải mã các tệp trước khi phân phối chúng.

bên

Khách hàng (delphi 2010): Tôi rất có thể sẽ lựa chọn không cho OpenPGPBlackbox

Server side (PHP 5), tôi cần phải tìm ra cách để mã hóa/giải mã tập tin với lệnh không tương tác .

Tôi đã cài đặt GnuPG trên máy chủ của tôi, đã thử mã này:

clear_file='/full/path/my-file.zip' 
encrypted_file='/full/path/my-file.zip.pgp' 

# Encrypt file 
/usr/bin/gpg2 --encrypt "$clear_file" 

# Decrypt file 
/usr/bin/gpg2 --decrypt "$encrypted_file" 

Nhưng dường như tôi không thể xác định, trong dòng lệnh, mà chìa khóa để sử dụng.

Mỗi người dùng sẽ có khóa công khai/riêng tư của riêng mình, vì vậy tôi cần phải có thể chỉ định khóa nào sẽ sử dụng để mã hóa/giải mã tệp được đề cập.

Câu hỏi của tôi là: Làm cách nào để buộc GnuPG sử dụng khóa riêng/khóa công khai khi mã hóa/giải mã tệp?

Trả lời

7

Các tùy chọn bạn đang tìm kiếm là:

--default-key $name$ 
      Use $name$ as the default key to sign with. If this option is not used, the default key is 
      the first key found in the secret keyring. Note that -u or --local-user overrides this 
      option. 
--local-user $name$ 
    -u  Use $name$ as the key to sign with. Note that this option overrides --default-key. 

hoặc có thể là:

--recipient $name$ 
    -r  Encrypt for user id $name$. If this option or --hidden-recipient is not specified, 
      GnuPG asks for the user-id unless --default-recipient is given. 
--default-recipient $name$ 
      Use $name$ as default recipient if option --recipient is not used and don't ask if 
      this is a valid one. $name$ must be non-empty. 

Đây có thể được dùng để xác định ai là người nhận, ví dụ khóa công khai nào để sử dụng để ký/mã hóa. Khi giải mã các tệp, GnuPG sẽ tự động chọn khóa chính xác nếu nó tồn tại trong khóa hiện tại, có thể được chọn với tùy chọn --keyring, nếu có nhiều. GnuPG cũng có thể được định cấu hình để tìm nạp các khóa cần thiết từ máy chủ khóa nếu chúng có sẵn ở đó.

Bạn cũng có thể quan tâm đến tùy chọn --batch để đảm bảo rằng không có câu hỏi tương tác nào được yêu cầu trong quá trình truy tố.

Tôi khuyên bạn nên đọc qua trang người dùng GnuPG. Có rất nhiều tùy chọn có thể hữu ích ngay bây giờ và sau đó.

+0

Cảm ơn bạn, vâng tôi đọc trang người đàn ông (và ** bị mất **). Tôi đã thử lệnh này: '/ usr/bin/gpg2 -v --decrypt --default-key" private-1.pgp "/ full/home/my-file.7z.pgp' nhưng tôi đã nhận ra 'gpg: public là 745ECDED gpg: được mã hóa bằng khóa RSA, ID 745ECDED gpg: giải mã không thành công: Không có khóa bí mật' ... quan tâm để chia sẻ một lệnh mẫu, vui lòng? Cảm ơn trước! – TheDude

+0

Tôi cũng sử dụng chuyển đổi '--local-user' và sử dụng đường dẫn đầy đủ cho tệp khóa cá nhân, nhưng nó không giúp được – TheDude

+1

Có thể là khoá không được tìm thấy trong khóa. Tôi không hoàn toàn chắc chắn nếu bạn có thể cho chìa khóa theo cách đó. Hãy thử nhập khóa đầu tiên vào vòng khóa bằng 'gpg --allow-secret-key-import --import private-1.pgp' và sau đó giải mã bằng:' gpg --decrypt my-file.7z.pgp'.Nếu điều này không làm việc, kiểm tra từ dòng lệnh, không phải từ php, để loại trừ các vấn đề với các biến môi trường vv Tùy chọn khác là có gì đó sai với tập tin quan trọng. – Edu

Các vấn đề liên quan