Jak zszyfrować kluczem PGP , GPG ?

0

Jak zaszyfrować kilkoma kluczami publicznymi plik. Potrzebuje wiedzieć czy potrzebuję jakieś biblioteki jak pobrać klucze z folderu i nimi zaszyfrować dany plik.

0

Nim napiszę na forum staram się poszukać w Google, ale nie za bardzo mogę sobie z tym poradzić. Pracuje na Windowsie i klucz publiczny mam w folderze "klucze" w katalogu z kodem. Chciałbym zaszyfrować 3 kluczami. Mogę prosić o pomoc w poprawie tego kodu żeby mu dział

$plik;
$gpg_path = '/usr/bin/gpg';  // (nie rozumien tej sciezki)
putenv("GNUPGHOME=/home/user_name/.gnupg"); // (oraz tej)
$eplik = shell_exec("echo $plik| $ gpg_path -e -r ");
$zaszyfrowanyplik=$eplik;

0

Ta pierwsza linijka to przypisanie zmiennej $gpg_path wartości na ścieżkę pliku gpg.exe (w Windows) - wpisz ścieżkę do gpg.exe.
Ta druga linijka to wprowadzenie pewnej zmiennej środowiskowej (GNUPGHOME) - wpisz tam swój katalog domowy GPG (tam gdzie masz keyring).

0

Dziękuje za pomoc,ale nadal coś mi nie wychodzi

<?php 

$plik="tekst";
$gpg_path = 'C:\Program Files (x86)\GNU\GnuPG\gpg.exe';  // (nie rozumien tej sciezki)
putenv("GNUPGHOME=D:\Praca\Klucze.gnupg"); // (oraz tej)
$eplik = shell_exec("echo $plik| $ gpg_path -e -r ");
echo $eplik;

		
?>
1

U mnie zadziałało coś takiego:

<?php 
 
$plik="tekst";
$gpg_path = 'C:\Program Files (x86)\GNU\GnuPG\pub\gpg.exe';
putenv("GNUPGHOME=D:\\Praca\\Klucze.gnupg");
$recipient = 'C27E20F1';
$eplik = shell_exec('echo $plik | "' . $gpg_path . '" -e -r ' . $recipient);
echo $eplik;
 
 
?>

Nie działa, bo argument -r wymaga podania adresu odbiorcy. W tym momencie zrobiłem sobie zmienną i użyłem mojego identyfikatora.
I nie działa, bo musisz dać podwójne backslashe w ścieżkach, bo w tym momencie tutaj \P i \K były traktowane jak symbole ucieczki.
I nie działa, bo przynajmniej u mnie gpg.exe jest w innym katalogu, tutaj masz poprawną (według mnie) ścieżkę.

I oczywiście musisz zadbać, żeby w katalogu D:\Praca\Klucze.gnupg znajdowały się pliki secring.gpg i pubring.gpg, bo bez tego nie pójdzie.

I polecam jeszcze dorzucić parametr -a do wywołania GPG (przed -e), żeby opakowywał w ASCII-armor, bo forma szyfrowania w postaci szeregu brzydkich (także niedrukowalnych) znaków zapewne nie będzie dla ciebie dobra.

0

gdzie znajdę pliki secring.gpg i pubring.gpg, i co to jest $recipient? Ja mam ściągnięta Kleopatr bo głownie na niej pracowałem ale muszę teraz wstawić szyfrowanie do kodu.

PS: czy nie powinno być jakieś ścieżki do klucza publicznego np Jan_Kowalski.asc ?

0

pubring i secring tworzone są domyślnie przez twoją instalację GPG. Do tych zbiorów kluczy musisz sobie klucze publiczne/prywatne zaimportować wcześniej. Dlatego też nie ma ścieżki do klucza.

$recipient to adres e-mail lub identyfikator klucza odbiorcy wiadomości.

0

Jest to kod w Pythonie i chciałbym mniejwiecej szyfrowanie zrobić w taki sam sposób ale w PHP.

def import_key(filename):
    key_data = open(filename).read()
    gpg.import_keys(key_data)

def encrypt_file(fname, recipients):
    with open(fname, 'rb') as f:
        status = gpg.encrypt_file(
            f, recipients=recipients, always_trust=True,
            output=fname+'.gpg')

    print 'ok: ', status.ok
    print 'status: ', status.status
    print 'stderr: ', status.stderr

if __name__ == '__main__':
    if len(sys.argv) < 2:
        print "Usage: %s YYYY-mm-DD" % sys.argv[0]
        sys.exit(0)
 #y
    gpg = gnupg.GPG(gnupghome='/home/testgpguser/gpghome')

    key_data = open('/opt/pgpkeys/Jan_Kowalski.asc').read()
    import_result = gpg.import_keys(key_data)
    #pprint(import_result.results)

    public_keys = gpg.list_keys()
    private_keys = gpg.list_keys(True)
    print 'public keys:'
    pprint(public_keys)
    print 'private keys:'
    pprint(private_keys) 

1 użytkowników online, w tym zalogowanych: 0, gości: 1