Qualcuno può mostrarmi (o fornire un collegamento a) un esempio di come crittografare un file in Java utilizzando il castello rimbalzante? Ho cercato su bouncycastle.org ma non ho trovato alcuna documentazione della loro API. Anche solo sapere quali classi utilizzare sarebbe di grande aiuto per me iniziare!Un esempio di crittografia di un file xml in Java utilizzando il castello rimbalzante
risposta
Che tipo di crittografia si desidera eseguire? Basato su password (PBE), simmetrico, asimmetrico? È tutto in come si configura lo Cipher.
Non è necessario utilizzare alcuna API specifica BouncyCastle, solo gli algoritmi forniti. Ecco un esempio che utilizza il cifrario BouncyCastle PBE per cifrare una stringa:
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);
}
}
Sale non dovrebbe essere costante .. –
Se si ottiene java.security.InvalidKeyException: Dimensione chiave illegale rif: http://stackoverflow.com/a/6481658/234110 –
Mentre è una risposta indiretta alla tua domanda, forse lo troverete utile usare jasypt per gestire la crittografia.
Ecco un esempio di come crittografare un file utilizzando jasypt: http://www.jasypt.org/encrypting-configuration.html
Ed, ecco come configurare castello gonfiabile come un provider per jasypt: http://www.jasypt.org/bouncy-castle.html
Una seconda libreria di terze parti per astrarre il primo probabilmente libreria di terze parti non richiesta? Sembra un'ottima idea. – jarnbjo
Utilizziamo jasypt e BouncyCastle. Jasypt gestisce la crittografia e la decrittazione trasparenti delle colonne del database con Hibernate e BouncyCastle esegue la crittografia e la decrittografia effettive. – Omniwombat
è possibile visualizzare il documento java a http://bouncycastle.org/docs/docs1.6/index.html
È possibile scaricare esempi da questa pagina: http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0764596330,descCd-DOWNLOAD.html
Si prega di aggiungere qualche dettaglio qui. Solo il riferimento a qualche link potrebbe rompersi in futuro. –
Se non lo fai avere una ragione particolare per l'utilizzo di BountyCastle, è possibile trovare un buon tutorial e informazioni di base sul supporto crittografico integrato Java con diversi esempi di codice here.
Vale la pena sottolineare che BouncyCastle è solo un "fornitore" che funziona all'interno del framework di crittografia incorporato (JCE). Viene spesso utilizzato perché contiene una suite di primitive più completa rispetto al provider predefinito. – caf
BouncyCastle non è "solo un fornitore". Puoi anche utilizzare la funzionalità di crittografia di BouncyCastle tramite la loro API proprietaria. Hai ragione che BouncyCastle fornisce algoritmi crittografici aggiuntivi, ma raramente ho visto alcun reale bisogno di questi. Più spesso che mai, BouncyCastle viene utilizzato per funzionalità già fornite dai provider di sicurezza incorporati standard API e VM. – jarnbjo
Il posto migliore per trovare castello gonfiabile esempi di codice Java è quello di passare attraverso i casi di test nella suite di test di castello gonfiabile Bouncy Castle latest release java
Queste suite di test contengono codice non deprecato che può essere utilizzato facilmente
- 1. C# Esempio di crittografia AES256 utilizzando System.Security.Cryptography.Aes
- 2. Lettura di un file XML utilizzando QXmlStreamReader
- 3. Crittografia di un file di grandi dimensioni con AES utilizzando JAVA
- 4. Bisogno di esempio per BouncyCastle PGP Crittografia file in C#
- 5. Inserimento di un dato in un XML utilizzando il Basex
- 6. Ottenere il tipo di codifica di un XML in java
- 7. scrittura su un file XML in Java
- 8. Efficace crittografia dei file utilizzando AES in java
- 9. Estrazione un elemento XML da un file XML utilizzando XPath
- 10. leggere il file xml utilizzando http
- 11. Lettura di un file remoto utilizzando Java
- 12. Esempio di un metodo di istanza? (Java)
- 13. Ordinamento di un XML in Java
- 14. Esempio di parser XML DOM
- 15. configurazione XML di esempio per log4j, ha l'applicazione 'main' Java e vuole scrivere il file
- 16. Modificare il contenuto di un file utilizzando Java
- 17. Java: Salvataggio di StreamResult in un file
- 18. correttamente la creazione di un nuovo certificato con un certificato intermedio utilizzando bouny castello
- 19. Generatore di file Xml in java
- 20. Aggiornamento di un file XML utilizzando Qt DOM
- 21. C# Criptare un file XML
- 22. Incluso un file XML in un file XML/XSL
- 23. Come esportare correttamente XML in un file utilizzando Powershell
- 24. Android - Dialog Personalizzazione utilizzando un file XML di layout
- 25. Metodo di crittografia/decrittografia semplice per crittografare un file immagine
- 26. scrittura di un file csv utilizzando Buffered writer in Java
- 27. Sostituire il testo in un file utilizzando Stream- Java 8
- 28. Stampa di un file PDF utilizzando PrinterJob in Java
- 29. Esempio di AES utilizzando Crypto ++
- 30. Utilizzare Netbeans per creare un XML di esempio da XSD
Vai con i link di cb160 e assicurati anche di ottenere il codice sorgente per bouncycastle. La documentazione dell'API è in gran parte povera e spesso molto povera. Tuttavia, il codice sorgente è abbastanza leggibile e l'ho usato spesso per rispondere a domande come "che tipo di CipherParameters ha bisogno il RijndaelEngine?". Basta guardare il metodo Rijndael pertinente e sarà ovvio. –