Czy ktoś może mi pokazać (lub podać link do) przykład szyfrowania pliku w Javie za pomocą dmuchanego zamku? Zerknąłem na bouncycastle.org, ale nie mogę znaleźć dokumentacji ich API. Nawet samo zorientowanie się, które zajęcia będą dla mnie przydatne, jest dla mnie wielką pomocą!Przykład szyfrowania pliku XML w Javie przy użyciu dmuchanego zamku
Odpowiedz
Jaki typ szyfrowania chcesz wykonać? Oparte na haśle (PBE), symetryczne, asymetryczne? Wszystko zależy od konfiguracji Cipher.
Nie powinieneś używać żadnych specjalnych API BouncyCastle, tylko te algorytmy, które zapewnia. Oto przykład, który używa szyfru BouncyCastle PBE do zaszyfrowania String:
import java.security.SecureRandom;
import java.security.Security;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.PBEKeySpec;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
public class PBE {
private static final String salt = "A long, but constant phrase that will be used each time as the salt.";
private static final int iterations = 2000;
private static final int keyLength = 256;
private static final SecureRandom random = new SecureRandom();
public static void main(String [] args) throws Exception {
Security.insertProviderAt(new BouncyCastleProvider(), 1);
String passphrase = "The quick brown fox jumped over the lazy brown dog";
String plaintext = "hello world";
byte [] ciphertext = encrypt(passphrase, plaintext);
String recoveredPlaintext = decrypt(passphrase, ciphertext);
System.out.println(recoveredPlaintext);
}
private static byte [] encrypt(String passphrase, String plaintext) throws Exception {
SecretKey key = generateKey(passphrase);
Cipher cipher = Cipher.getInstance("AES/CTR/NOPADDING");
cipher.init(Cipher.ENCRYPT_MODE, key, generateIV(cipher), random);
return cipher.doFinal(plaintext.getBytes());
}
private static String decrypt(String passphrase, byte [] ciphertext) throws Exception {
SecretKey key = generateKey(passphrase);
Cipher cipher = Cipher.getInstance("AES/CTR/NOPADDING");
cipher.init(Cipher.DECRYPT_MODE, key, generateIV(cipher), random);
return new String(cipher.doFinal(ciphertext));
}
private static SecretKey generateKey(String passphrase) throws Exception {
PBEKeySpec keySpec = new PBEKeySpec(passphrase.toCharArray(), salt.getBytes(), iterations, keyLength);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBEWITHSHA256AND256BITAES-CBC-BC");
return keyFactory.generateSecret(keySpec);
}
private static IvParameterSpec generateIV(Cipher cipher) throws Exception {
byte [] ivBytes = new byte[cipher.getBlockSize()];
random.nextBytes(ivBytes);
return new IvParameterSpec(ivBytes);
}
}
Sól nie powinna być stała .. –
Jeśli otrzymujesz java.security.InvalidKeyException: Nielegalny rozmiar klucza ref: http://stackoverflow.com/a/6481658/234110 –
Chociaż to odpowiedź pośrednia na pytanie, być może przekonasz się, że warto korzystać z jasypt obsługiwać szyfrowanie.
oto przykład jak zaszyfrować plik, używając jasypt: http://www.jasypt.org/encrypting-configuration.html
A oto jak skonfigurować nadmuchiwany zamek jako dostawca dla jasypt: http://www.jasypt.org/bouncy-castle.html
Druga biblioteka trzeciej strony, aby wyodrębnić pierwszą prawdopodobnie niepotrzebna biblioteka innych firm? Brzmi jak bardzo dobry pomysł. – jarnbjo
Używamy jasypt i BouncyCastle. Jasiupt obsługuje przezroczyste szyfrowanie i odszyfrowywanie kolumn bazy danych za pomocą Hibernate, a BouncyCastle dokonuje rzeczywistego szyfrowania i deszyfrowania. – Omniwombat
można zobaczyć doc java na http://bouncycastle.org/docs/docs1.6/index.html
przykłady można pobrać z tej strony: http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0764596330,descCd-DOWNLOAD.html
Proszę tutaj dodać trochę szczegółów. Tylko odwoływanie się do jakiegoś linku może przerwać w przyszłości. –
Jeśli nie mają jakiś szczególny powód używania BountyCastle, można znaleźć dobry tutorial i podstawowe informacje na temat wbudowanej w Javę obsługi kryptografii z kilkoma przykładami kodu: here.
Warto zauważyć, że BouncyCastle to po prostu "dostawca", który działa w ramach wbudowanej struktury kryptograficznej (JCE). Jest często używany, ponieważ zawiera bardziej kompletny zestaw prymitywów niż domyślny dostawca. – caf
BouncyCastle nie jest "tylko dostawcą". Możesz również skorzystać z funkcji kryptografii BouncyCastle za pośrednictwem swojego zastrzeżonego API. Masz rację, że BouncyCastle zapewnia dodatkowe algorytmy kryptograficzne, ale rzadko widziałem jakąś realną potrzebę. Częściej niż BouncyCastle jest używany do funkcjonalności już dostarczonych przez standardowych dostawców zabezpieczeń wbudowanych API i VM. – jarnbjo
Najlepszym miejscem, aby znaleźć przykłady kodu Java nadmuchiwany zamek jest przejść przypadków testowych w pakiecie próbnym nadmuchiwany zamek Bouncy Castle latest release java
Te zestawy testów zawierają non przestarzałej kod, który może być używany łatwo
- 1. Generowanie pliku XML przy użyciu pliku XSD
- 2. Whats dobry przykład napisać XML przy użyciu VB.net 2008
- 3. Parsowanie pliku XML przy użyciu C#?
- 4. Aktualizacja pliku XML przy użyciu Qt DOM
- 5. Wyodrębnianie podzbiór pliku XML przy użyciu XSL
- 6. Aktualizowanie pliku XML przy użyciu doładowania property_tree
- 7. Rodzaje szyfrowania dostępne w Javie?
- 8. Odczytywanie pliku XML przy użyciu QXmlStreamReader
- 9. M2Crypto szyfrowania/odszyfrowywania przy użyciu AES256
- 10. szyfrowania RSA w Javie, odszyfrować w PHP
- 11. tworzenie pliku XML przy użyciu XDocument w C#
- 12. szyfrowania Triple DES i odszyfrowywania w Javie
- 13. Zapis do pliku XML w Javie
- 14. Drukowanie pliku .PDF przy użyciu różnych drukarek w Javie
- 15. Czytanie pliku .txt przy użyciu klasy Scanner w Javie
- 16. Przykładowy przykład dla szyfrowania plików BouncyCastle PGP w C#
- 17. Przykład zapisu pliku CSV przy użyciu biblioteki biblioteki String Toolkit
- 18. Wstawianie danych w pliku XML przy użyciu Basex
- 19. Minimalny przykład WCF przy użyciu HTTPS
- 20. Zachowywanie sesji w Javie przy użyciu sendredirect
- 21. Dzielenie ciągów przy użyciu Regex w Javie
- 22. Odczytywanie pliku XML przy użyciu kodu JavaScript z lokalnego folderu
- 23. Parsowanie XML przy użyciu XDocument
- 24. PBKDF2 w Dmuchanym Zamku C#
- 25. Przykład aplikacji .net przy użyciu Amazon SQS
- 26. Generowanie klasy Java z pliku XML przy użyciu XStream
- 27. sigv4 post-przykład przy użyciu Pythona
- 28. Magento - usuń blok przy użyciu aktualizacji XML
- 29. Where przy użyciu języka XML w SQL
- 30. XPath w R przy użyciu pakietu XML
Idź z linkami cb160, a także upewnij się, aby uzyskać kod źródłowy dla bouncycastle. Dokumentacja API jest przeważnie słaba i często bardzo słaba. Jednak kod źródłowy jest dość czytelny i często używałam go do odpowiadania na pytania typu "jakiego rodzaju CipherParameters potrzebuje RijndaelEngine?". Wystarczy spojrzeć na odpowiednią metodę Rijndael i będzie to oczywiste. –