Может ли кто-нибудь показать мне (или предоставить ссылку) пример того, как зашифровать файл на Java с помощью bouncy castle? Я просмотрел bouncycastle.org, но не могу найти документацию об их API. Даже просто зная, какие классы использовать, будет большой помощью для меня, чтобы начать!
Пример шифрования xml файла на Java с использованием надувного замка
Ответ 1
Какой тип шифрования вы хотите выполнить? Пароль (PBE), симметричный, асимметричный? Его все в том, как вы настраиваете Cipher.
Вам не нужно использовать какие-либо конкретные API BouncyCastle, а также алгоритмы, которые он предоставляет. Вот пример, который использует шифр PBE BouncyCastle для шифрования строки:
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);
}
}
Ответ 2
Вы можете просмотреть java-документ в http://bouncycastle.org/docs/docs1.6/index.html
Вы можете скачать примеры с этой страницы: http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0764596330,descCd-DOWNLOAD.html
Ответ 3
Если у вас нет особых причин для использования BountyCastle, вы можете найти хороший учебник и справочную информацию о встроенной поддержке криптографии Java с несколькими примерами кода .
Ответ 4
Лучшее место для поиска примеров кода Java Bouncy Castle - пройти тестовые примеры в наборе тестов бодрящего замка Bouncy Castle последний выпуск java
Эти комплекты тестов содержат не устаревший код, который можно легко использовать
Ответ 5
Хотя это косвенный ответ на ваш вопрос, возможно, вам будет полезно использовать jasypt для обработки шифрования.
здесь пример того, как зашифровать файл с помощью jasypt: http://www.jasypt.org/encrypting-configuration.html
И вот, как настроить надувной замок как поставщика для jasypt: http://www.jasypt.org/bouncy-castle.html