AES-256 kullanarak bir dosyayı şifrelemek istiyorum. Bunu hızlı ve kolay bir şekilde nasıl yapabilirim ve nasıl - veya başka biri - tekrar şifresini çözebilir miyim?
AES-256 kullanarak bir dosyayı şifrelemek istiyorum. Bunu hızlı ve kolay bir şekilde nasıl yapabilirim ve nasıl - veya başka biri - tekrar şifresini çözebilir miyim?
Yanıtlar:
Ne yazık ki, eşyalarınızı güvenceye almak için kolay bir çözüm yok. Kullanım durumunuzu düşünün, belki düz AES'ten başka bir şey daha uygun olabilir.
Çok basit bir platform bağımsız şifreleme istiyorsanız, openssl kullanabilirsiniz .
Hala openssl kullanmak istiyorsan:
Şifreleme:
openssl aes-256-cbc -in attack-plan.txt -out message.enc
Şifre çözme:
openssl aes-256-cbc -d -in message.enc -out plain-text.txt
Hem şifreleme hem de şifre çözme base64
işlevini kullanarak iletiyi kodlamak için openssl komutunu alabilirsiniz -a
. Bu şekilde, örneğin şifreli metni bir e-posta iletisine yapıştırabilirsiniz. Bu gibi görünecek:
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=
Seçeceğiniz şifre ve çalışma modları olduğuna dikkat edin. Normal kullanım için CBC modunda aes 256'yı tavsiye ederim. Bunlar, sahip olduğunuz şifreleme modlarıdır (sadece AES sayıyor):
aes-128-cbc ← this is okay
aes-128-ecb
aes-192-cbc
aes-192-ecb
aes-256-cbc ← this is recommended
aes-256-ecb
Ayrıca bakınız:
Lütfen aklınızda bulundurun:
OpenSSL sizden bir şifre isteyecektir. Bu bir şifreleme anahtarı değil, 32 bayt ile sınırlı değil! Dosyaları başka biriyle aktaracaksanız, paylaşılan sırrınız çok güçlü olmalıdır. Şifrenizin ne kadar iyi olduğunu anlamak için bu siteyi kullanabilirsiniz:
Uyarı: Bu sitelerin şifrenizi sunucuya göndermediğini kontrol ettim, ancak bu herhangi bir zamanda değişebilir. Bu siteleri dev tools / inspector ile kullanın ve güçlü şifrenizi yazmadan önce herhangi bir şey gönderip göndermediklerini kontrol edin.
/usr/bin/openssl enc -aes-256-cbc -a -salt -in $1 -out ${1}.enc
Beklediğiniz gibi tam tersi.
openssl
komut satırı aracı çoğunlukla OpenSSL kütüphanesini test etmek için bir kavram kanıtıdır. Bu sorunun doğru cevabı GPG veya 7z gibi bazı arşivleyicilerdir .
openssl enc
, zayıf bir parolanız varsa o kadar da güvenli değildir. Daha önce belirli bir kullanım önerdim openssl enc
, ancak şimdi gpg
bir KDF kullandığından daha iyi bir şekilde kullanmasını önerdim. Bu cevaba bakınız .
gpg
Komutu kullanmayı seviyorum :
şifrele:
gpg --cipher-algo AES256 --symmetric filename.tar.gz
Kısa gösterim:
gpg --cipher-algo AES256 -c filename.tar.gz
Bu bir parola isteyecektir.
azalmak:
gpg --output filename.tar.gz --decrypt filename.tar.gz.gpg
Kısa gösterim:
gpg -o filename.tar.gz -d filename.tar.gz.gpg
AES256'yı varsayılan yapmak cipher-algo AES256
için ayrıca ekleyebilirsiniz ~/.gnupg/gpg.conf
. ( Manpage göre CAST5 )
AES
(AES-128 anlamına gelir). AES-128 biraz daha hızlı ve daha az güvenli değil.
gpg
Şifrenin önbelleğe alınmasını nasıl önleyebilirim ?
7z ( şifre seçeneği kullanıldığında), 256bit AES şifrelemesi kullanır (SHA256 anahtar germe ile ).
Kur ( p7zip-full
), şifrelemek istediğiniz bir dosyaya veya dizine sağ tıklayın ve Sıkıştır , .7z ve Diğer seçenekler / Parola'yı seçin .
Şifre çözme için, .7z dosyasına sağ tıklayın ve Buraya Ayıkla'yı seçin .
Bağlantılı web sitesi açık kaynaklı bir 256-bit aes şifreleme / şifre çözme aracı içerir ve çok platformludur - MacO'lar, Windows, Linux ve diğerleri Java ile.
şifrele: aescrypt -e <file>
azalmak: aescrypt -d <file>
Sözdizimini kullanarak giriş klasörünüzü yedekleyebilir ve şifreleyebilirsiniz:
tar -cvf - /home/<home_folder> | aescrypt -e -p <password_message> - > backup.tar.aes
make
sudo make install
İkili dosyaları veya kaynak kodunu web sitesinden indirin.
Yapmış olacağım önerilerin birçoğu bu konuya çoktan eklenmiştir. Temelde openssl gerçekten bir dosyayı veya betiği şifrelemenin en kolay yoludur. Ancak, bazı platformlarda openssl'nin tüm sürümlerinde bulunmadığından AES-256'yı kullanmamaya dikkat ederim . En yeni işletim sistemleri ... yani Linux'ta var. Ancak AIX 5.3 gibi diğerleri bunu yapmaz (bence HP-UX de). Dosyanızı veya komut dosyanızı farklı platformlarda kullanmayı düşünüyorsanız, AES-128 kullanmanızı şiddetle tavsiye ederim, çünkü her yerde kullanılabilir.
AES-128 kullanarak bir dosyayı nasıl "hızlı ve kolay" şifreleyebilirsiniz?
Www.ShellScrypt.com gibi bir site , kabuk komut dosyalarını şifrelemek için oldukça yoğun olarak AES-128 openssl kullanır ve ardından komut dosyalarının şifrelenmiş kopyalarını çalıştırılabilir hale getirir. Yapmanız gereken tek şey betiği siteye yapıştırmak ve sizin için bir zip dosyası oluşturulur. Bu zip dosyası, dosyanızın şifreli (ve bir komut dosyasıysa çalıştırılabilir) sürümünü içerecektir. Bu, betiği kullanmak istediğiniz her sistemde herhangi bir paket veya modül gereksinimini karşılamak zorunda kalmadan veya bir dosyayı / betiği openssl komutlarının karmaşık ve kafa karıştırıcı teşviklerini çalıştırmaya çalışmak zorunda kalmadan " kolayca " ve " rahatça " şifrelemenizi sağlar.
Aşağıda AES-128'i kullanan temel bir şifreleme / şifre çözme openssl komutu verilmiştir:
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:~$
Stefano Palazzo'nun cevabını ekleyerek, base64 komutuna benzer şekilde çalışan küçük bir bash işlevi yarattım.
Aes256 bir dosyayı şifreleyecek ve ardından base64 onu kodlayacaktır. Tersini yaparken, şifresini çözecek, şifresini çözecek ve ardından orijinal düz metnin tükürecektir.
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"
}
Kullanımı:
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
daha kısaopenssl enc -aes-256-cbc
ve çok çalışıyor. Bunun için manuel sayfa çalıştırılarak kullanılabilirman enc
. Aslaecb
temperlenmemiş veriler için kullanmayın , daima kullanıncbc
.-salt
varsayılan olduğundan beri gereksiz. Eğer ihmal ederseniz-out filename
, çıktı sadece verileri analiz etmeniz gerekiyorsa diske yazmanız gerekmeyen standart çıktıya yazılacaktır. Bir sonraki komut düz metin için satırı Cound gösterilmektedir:openssl aes-256-cbc -d -in filename | wc -l
. (başka bir kullanım, bir dosyayı okuma:openssl aes-256-cbc -d -in filename | less
)