Enkripsikan beberapa file sekaligus


10

Saya sedang menulis skrip yang membuat arsip proyek dan kemudian membuat arsip 7z untuk memudahkan saya menyimpan versi tertentu dan menyimpan cadangan terenkripsi.

Setelah saya membuat arsip dan saya sampai pada tahap enkripsi, saya ingin mengenkripsi file dengan satu panggilan, gpgjika memungkinkan, sehingga pengguna hanya perlu memasukkan kata sandi mereka satu kali. Kalau tidak, kita harus men-cache passphrase pengguna dalam memori (yang saya benar-benar ingin tidak melakukannya) atau minta mereka memasukkan dan mengkonfirmasi passphrase mereka untuk setiap proyek tunggal yang diarsipkan (yang lebih buruk).

Apakah ada cara untuk mengirimkan beberapa nama file agar gpgdapat mengenkripsi semuanya dalam sekali jalan?

Jika saya coba ini:

$ gpg --cipher-algo AES256 --compression-algo BZIP2 -c project1.7z project2.7z

... Saya melihat kesalahan berikut di shell:

usage: gpg [options] --symmetric [filename]

Apakah ada cara untuk melakukan apa yang ingin saya capai?


2
Mengapa Anda pertama kali menggunakan 7zip (mungkin) untuk kompres, lalu menyuruh GnuPG untuk kompres lagi menggunakan bzip2? Saya tidak melihat itu membuat Anda banyak dalam hal efisiensi ruang, dan saya memang melihatnya menghabiskan banyak biaya CPU.
CVn

1
> Apakah ada cara untuk mengirimkan beberapa nama file ke gpg agar dapat dienkripsi> semuanya dalam sekali jalan? Ya, coba jawaban ini
Anchan

Jawaban:


5
Is there a way to pass multiple filenames to gpg to have it encrypt all of
them in one go?

Tidak, tidak ada.

Anda mungkin ingin meneruskan frasa sandi dengan salah satu opsi gpg berikut (yang terakhir akan menjadi pilihan paling aman):

--passphrase
--passphrase-file
--passphrase-fd

10

Karena GnuPG tidak mendukung ini secara langsung, cara untuk melakukannya adalah dengan menambahkan layer lain, misalnya menggunakan tar.

tar c project1.7z project2.7z | gpg --cipher-algo AES256 --compression-algo BZIP2 -co projects.gpg

Dan untuk mengekstrak:

gpg -d projects.gpg | tar x

Anda akan dibiarkan dengan project1.7zdan project2.7z. Script Anda kemudian dapat mengambil di mana Anda tinggalkan.


3

Jika Anda ingin mencoba sesuatu yang lain maka GPG ada metode cadangan lain untuk mengenkripsi beberapa file:

sumber asli: http://www.obsd.hu/docs/Unix-backup-with-aes.txt

vi ~/.bashrc

backup() {
if [[ "$1" = "" ]]; then echo 'specify full path' && exit 1; fi
CURRENTDATE="`date +%F-%Hh`"
echo 'Did you do a screenshot of the Desktop and backup all the Bookmarks of the webbrowser and backup cronjobs, etc...?'
read
echo "START: `date`"
ORIGDIR="$1"; ORIGDIRNORM="`echo $ORIGDIR | sed 's/\/$//g'`"; tar cvf - "${ORIGDIRNORM}/" 2>/dev/null | gzip -9 - 2>/dev/null | openssl aes-256-cbc -salt -out "${ORIGDIRNORM}-backup-${CURRENTDATE}.tar.gz.aes" && cksum "${ORIGDIRNORM}-backup-${CURRENTDATE}.tar.gz.aes" >> checksum.txt
echo "END: `date`"
}

decrypt() {
if [[ "$1" = "" ]]; then echo 'specify full path' && exit 1; fi
CURRENTDATE="`date +%F-%Hh`"
echo 'This will decrypt the backup in the current working directory, are you sure?'
read
echo "START: `date`"
ORIGDIR="$1"
openssl aes-256-cbc -d -salt -in "${ORIGDIR}" | tar -xz -f -
echo "END: `date`"
}

Penggunaan: cukup gunakan "backup DIRECTORY" untuk enkripsi dan "decrypt DIRECTORY.tar.gz.aes"


1

Telah berhasil melakukan sesuatu seperti ini, hari ini:

  1. Mengubah direktori ke direktori yang berisi file target, dan menjalankan skrip Bash untuk menemukan nama file yang diperlukan dan mendaftarkannya ke file teks yang saya panggil found.txt.

  2. Jalankan skrip Bash yang meminta gpg2 untuk membaca setiap nama file dalam satu loop dan ke dalam variabel memori, dan dalam loop yang sama untuk mengenkripsi menggunakan kunci penandatanganan saya dan menentukan bahwa itu untuk dibaca sendiri. gpg2 memasang munculan untuk memasukkan frasa sandi Anda, yang munculan memiliki sedikit kotak centang di mana Anda dapat memilih untuk tetap mengaktifkan frasa sandi Anda selama sesi. Praktik buruk, tetapi tidak terlalu buruk jika Anda tidak berada di Net, dan Anda langsung mati setelah sesi enkripsi.

  3. Satu-satunya masalah adalah bahwa ada / harus ditangani. Jadi duduk dengan jari saya pada tombol Y dan dienkripsi 51 nos file dalam waktu kurang dari satu menit.


Skrip diberikan di bawah ini:

Script 'find' adalah file bernama FindFilesAndListtoTextfile.sh:

#! /usr/bin/bash
#Try this to list the files you want using the appropriate file identifier i.p.o "DSCN.*":

source="/home/myself/Whatever  #note no gaps on either side of the equal-to sign 
 target="/home/myself/Whatever/found.txt"
 find $source -name "*DSCN*" -type f > $target       

Skrip enkripsi disebut ReadFilenameAndEncrypt.sh:

#!/bin/bash
line="/home/myself/Whatever/found.txt"
while IFS='' read -r line || [[ -n "$line" ]]; do
    echo "Text read from file: $line"
    gpg2 -e -u mysecretkeyID -r mysecretkeyID "$line"
  done < "$1"

Ini harus dijalankan sebagai pengguna biasa:

$ bash ReadFilenameAndEncrypt.sh found.txt

Semoga ini membantu. Belum tahu cara menghindari y / n.


0

Perintah berikut ini berfungsi untuk saya selama saya tidak memiliki nama file dengan spasi di dalamnya.

for file in $(ls | grep -v ".gpg"); do gpg -c --cipher-algo AES256 --compress-algo 1 --batch --passphrase "<password>" $file && rm -f $file; done

Anda juga bisa menggunakan perintah find.

for file in $(find /home -type f | grep -v ".gpg"); do gpg -c --cipher-algo AES256 --compress-algo 1 --batch --passphrase "<password>" $file && rm -f $file; done

Terakhir jika Anda ingin menggunakan file untuk kata sandi, gunakan:

--passphrase-file <filename>

-1

Ya ada cara mudah:

for x in *; do 
  gpg -r (yourencrytionkey.com) -o $x.pgp -e $x
done

-1

echo "Masukkan kata sandi:"

baca kata sandi

Temukan . -type f -exec gpg --passphrase $ password -c {} \;

Hmmmmmm GPG meminta dengan GraphicMessageBox kata sandi untuk setiap file.

Jadi, saya memutuskan untuk menggunakan CRYBULL (program Kriptografi yang saya buat) di C-ANSI. Anda dapat mengunduh secara gratis di www.labolida.com

Temukan . -type f -exec crybull {} {} .cry $ password encode \;


Cobalah untuk membuat jawaban yang lebih rumit. Selain itu, pertanyaan ini sudah dijawab. Baca FAQ untuk mempelajari cara menjawab pertanyaan dengan benar .
zuazo
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.