Chcę zaszyfrować plik za pomocą AES-256. Jak mogę to zrobić szybko i łatwo i jak mogę - lub ktoś inny - ponownie go odszyfrować?
Chcę zaszyfrować plik za pomocą AES-256. Jak mogę to zrobić szybko i łatwo i jak mogę - lub ktoś inny - ponownie go odszyfrować?
Odpowiedzi:
Niestety nie ma łatwego rozwiązania do zabezpieczenia swoich rzeczy. Pomyśl o swoim przypadku użycia, być może coś innego niż zwykły AES jest bardziej odpowiedni.
Jeśli chcesz bardzo prostego, niezależnego od platformy szyfrowania, możesz użyć openssl .
Jeśli nadal chcesz korzystać z openssl:
Szyfrowanie:
openssl aes-256-cbc -in attack-plan.txt -out message.enc
Deszyfrowanie:
openssl aes-256-cbc -d -in message.enc -out plain-text.txt
Możesz uzyskać openssl, aby base64
zakodować wiadomość, używając -a
przełącznika zarówno szyfrowania, jak i deszyfrowania. W ten sposób możesz na przykład wkleić tekst zaszyfrowany do wiadomości e-mail. Będzie to wyglądać tak:
stefano:~$ openssl aes-256-cbc -in attack-plan.txt -a
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
U2FsdGVkX192dXI7yHGs/4Ed+xEC3ejXFINKO6Hufnc=
Pamiętaj, że masz do wyboru szyfry i tryby działania. Do normalnego użytkowania polecam aes 256 w trybie CBC. Oto dostępne tryby szyfrów (tylko zliczanie AES):
aes-128-cbc ← this is okay
aes-128-ecb
aes-192-cbc
aes-192-ecb
aes-256-cbc ← this is recommended
aes-256-ecb
Zobacz też:
Proszę zanotować:
OpenSSL poprosi o podanie hasła. To nie jest klucz szyfrujący, nie jest ograniczony do 32 bajtów! Jeśli zamierzasz przesyłać pliki z kimś innym, Twój wspólny sekret powinien być bardzo silny. Możesz użyć tej strony, aby dowiedzieć się, jak dobre jest Twoje hasło:
Ostrzeżenie: sprawdziłem, czy te witryny nie wysyłają hasła do serwera, ale można je zmienić w dowolnym momencie. Skorzystaj z tych stron za pomocą narzędzi deweloperskich / inspektora i sprawdź, czy coś wysyłają przed wpisaniem silnego hasła.
/usr/bin/openssl enc -aes-256-cbc -a -salt -in $1 -out ${1}.enc
z odwrotnością, jak można się spodziewać.
openssl
narzędzie wiersza poleceń jest głównie sprawdzianem koncepcji do testowania biblioteki OpenSSL. Prawidłowa odpowiedź na to pytanie to GPG lub jakiś archiwizator, taki jak 7z .
openssl enc
tak naprawdę nie jest tak bezpieczne, jeśli masz słabe hasło. Wcześniej zalecałem pewne użycie openssl enc
, ale teraz sugeruję użycie gpg
zamiast tego, ponieważ używa KDF w lepszy sposób. Zobacz tę odpowiedź .
Lubię używać gpg
polecenia:
Szyfruj:
gpg --cipher-algo AES256 --symmetric filename.tar.gz
Stenografia:
gpg --cipher-algo AES256 -c filename.tar.gz
To poprosi o hasło.
Odszyfruj:
gpg --output filename.tar.gz --decrypt filename.tar.gz.gpg
Stenografia:
gpg -o filename.tar.gz -d filename.tar.gz.gpg
Możesz także dodać, cipher-algo AES256
aby ustawić ~/.gnupg/gpg.conf
AES256 jako domyślny. (Według strony podręcznika jest to CAST5 )
AES
(czyli AES-128). AES-128 jest nieco szybszy i nie jest mniej bezpieczny.
gpg
buforowaniu hasła?
7z (gdy używana jest opcja hasła ) wykorzystuje 256-bitowe szyfrowanie AES (z rozciąganiem klucza SHA256 ).
Zainstaluj go ( p7zip-full
), kliknij prawym przyciskiem myszy plik lub katalog, który chcesz zaszyfrować, i wybierz Kompresuj , .7z i Inne opcje / Hasło .
W celu odszyfrowania kliknij prawym przyciskiem myszy plik .7z i wybierz opcję Wyodrębnij tutaj .
Powiązana witryna zawiera 256-bitowe narzędzie AES do szyfrowania / deszyfrowania i jest wieloplatformowa - MacOs, Windows, Linux i inne za pośrednictwem Java.
Szyfruj: aescrypt -e <file>
Odszyfruj: aescrypt -d <file>
Możesz wykonać kopię zapasową i zaszyfrować swój folder domowy, używając składni:
tar -cvf - /home/<home_folder> | aescrypt -e -p <password_message> - > backup.tar.aes
make
sudo make install
Pobierz pliki binarne lub kod źródłowy ze strony internetowej.
Wiele sugestii, które bym przedstawił, zostało już przedstawionych w tym wątku. Zasadniczo openssl jest naprawdę najłatwiejszym sposobem na szyfrowanie pliku lub skryptu. Jednak odradzam używanie AES-256 tylko dlatego, że nie jest on dostępny we wszystkich wersjach openssl na niektórych platformach. Większość nowszych systemów operacyjnych ... tzn. Linux ma to. Ale inne, takie jak AIX 5.3, tego nie robią (myślę, że także HP-UX). Jeśli zamierzasz używać swojego pliku lub skryptu na różnych platformach, zdecydowanie zalecamy używanie AES-128, ponieważ jest on dostępny wszędzie.
Jak „szybko i łatwo” zaszyfrować plik za pomocą AES-128?
Strona taka jak www.ShellScrypt.com używa dość intensywnie openssl AES-128 do szyfrowania skryptów powłoki, a następnie sprawia, że zaszyfrowane kopie skryptów są wykonywalne. Wszystko, co musisz zrobić, to wkleić skrypt na stronę, a zostanie wygenerowany plik zip. Ten plik zip będzie zawierał zaszyfrowaną (i wykonywalną, jeśli jest to skrypt) wersję pliku. Umożliwia to „ łatwe ” i „ wygodne ” szyfrowanie pliku / skryptu bez konieczności spełniania wymagań dotyczących pakietu lub modułu w każdym systemie, w którym zamierzasz używać skryptu lub uruchamiać kilka skomplikowanych i mylących inkantacji poleceń openssl.
Poniżej pokazano podstawowe polecenie szyfrowania / deszyfrowania openssl, które korzysta z AES-128:
test@test-VirtualBox:~$
test@test-VirtualBox:~$ echo precious-content | openssl aes-128-cbc -a -salt -k mypassword
U2FsdGVkX1+K6tvItr9eEI4yC4nZPK8b6o4fc0DR/Vzh7HqpE96se8Fu/BhM314z
test@test-VirtualBox:~$
test@test-VirtualBox:~$ echo U2FsdGVkX1+K6tvItr9eEI4yC4nZPK8b6o4fc0DR/Vzh7HqpE96se8Fu/BhM314z | openssl aes-128-cbc -a -d -salt -k mypassword
precious-content
test@test-VirtualBox:~$
test@test-VirtualBox:~$
Dodając do odpowiedzi Stefano Palazzo, stworzyłem małą funkcję bash, która działa podobnie do polecenia base64.
Aes256 zaszyfruje plik, a następnie koduje go base64. Podczas wykonywania operacji odwrotnej kodowanie bazowe będzie dekodowane, deszyfrowane, a następnie wypluwany oryginalny tekst jawny.
aes256() {
decodeMe=""
isPipe="$([ ! -t 0 ] && echo "true" || echo "false")"
if [ "$1" = '-d' ] || [ "$1" = '--decode' ]; then
decodeMe="-d"
shift
fi
if [ "$isPipe" = "true" ]; then
read input
printf '%s\n' "$input" | openssl aes-256-cbc -a $decodeMe
exitCode="$?"
else
openssl aes-256-cbc -a $decodeMe -in "$*"
exitCode="$?"
fi
unset isPipe decodeMe input
return "$exitCode"
}
Stosowanie:
echo "my string" | aes256
# enter aes-256-cbc encryption password
# Returns: U2FsdGVkX1++e/BhBGlNOzNvarqq7zI13S/hbiKVzXQ=
echo "U2FsdGVkX1++e/BhBGlNOzNvarqq7zI13S/hbiKVzXQ=" | aes256 -d
# enter aes-256-cbc decryption password
# Returns: my string
aes256 file.plain > file.crypt
# enter aes-256-cbc encryption password
aes256 -d file.crypt
# enter aes-256-cbc decryption password
# Spits out original unencrypted file.
openssl aes-256-cbc
jest krótszy niżopenssl enc -aes-256-cbc
i też działa. Strona podręcznika jest dostępna po uruchomieniuman enc
. Nigdy nie używajecb
danych, które nie powinny być hartowane, zawsze używajcbc
.-salt
jest zbędny, ponieważ jest domyślny. Jeśli pominiesz-out filename
dane wyjściowe zostaną zapisane na standardowe wyjście, co jest przydatne, jeśli potrzebujesz tylko przeanalizować dane, ale nie zapisać ich na dysku. Następnego komenda pokazuje cound liniowy tekstu jawnego:openssl aes-256-cbc -d -in filename | wc -l
. (przeznaczenia, odczytywania pliku:openssl aes-256-cbc -d -in filename | less
)