任何人都可以向我展示(或提供鏈接)如何使用彈性城堡加密Java文件的示例?我瀏覽過bouncycastle.org,但找不到他們的API的任何文檔。即使只知道要使用哪些課程,對我而言也是一大幫助!使用彈性城堡在Java中加密xml文件的示例
回答
你想要執行什麼類型的加密?基於密碼(PBE),對稱,不對稱?它的全部內容如何配置Cipher。
您不應該使用任何BouncyCastle特定的API,只需使用它提供的算法。下面是使用BouncyCastle的PBE密碼來加密的字符串,例如:
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);
}
}
鹽不應該是恆定的.. – 2015-01-29 13:39:47
如果你正在得到 java.security.InvalidKeyException:非法密鑰大小 ref:http://stackoverflow.com/a/6481658/234110 – 2015-06-25 06:01:03
雖然這是一個間接的回答你的問題,也許你會發現它很有用jasypt來處理加密。
這裏有一個如何使用jasypt加密文件的例子: http://www.jasypt.org/encrypting-configuration.html
而且,這裏是如何充氣城堡配置爲jasypt供應商: http://www.jasypt.org/bouncy-castle.html
第二個第三方庫抽象第一個可能不需要的第三方庫?聽起來像一個非常好的主意。 – jarnbjo 2010-01-12 20:55:29
我們使用jasypt和BouncyCastle。 Jasypt使用Hibernate處理數據庫列的透明加密和解密,而BouncyCastle執行實際的加密和解密。 – Omniwombat 2010-01-12 21:46:48
您可以在http://bouncycastle.org/docs/docs1.6/index.html查看Java文檔
您可以從這個頁面下載的例子:http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0764596330,descCd-DOWNLOAD.html
請在這裏添加一些細節。僅指某些鏈接將來可能會中斷。 – 2015-11-23 08:00:38
如果你不這樣做有任何使用BountyCastle的特殊原因,您可以通過幾個代碼示例here找到有關Java內置加密支持的良好教程和背景信息。
找到充氣城堡Java代碼示例最好的地方是要經過測試用例的測試套件充氣城堡的 Bouncy Castle latest release java
這些測試套件包含非過時代碼,可以很容易地使用
- 1. 帶有彈性城堡的AES解密
- 2. 如何在NetBeans Java中使用充氣城堡(DES)加密和解密文件?
- 3. 使用jsencrypt進行RSA加密並使用彈性城堡進行解密?
- 4. 充氣城堡 - 執行加密和解密XML文件?
- 5. 如何使用eclipse在J2ME中使用彈性城堡API?
- 6. 需要幫助才能在c#中使用bouncy城堡加密/解密文件
- 7. RSA使用彈性城堡與存儲在CSP博客中的密鑰
- 8. 橢圓曲線密碼學(ECC)與彈性城堡用於非對稱加密
- 9. 充氣城堡加密
- 10. 使用Bouncy城堡RSA Java
- 11. 加密和解密使用充氣城堡在C#和PHP
- 12. Java中充氣城堡的性能
- 13. 充氣城堡C#PGP解密例如
- 14. 將彈性城堡X509Certificate鑄造爲Java.security.cert.Certificate []
- 15. 使用彈性城堡生成的RSA密鑰對。使代碼可運行在Java程序
- 16. AES加密/解密java充氣城堡解釋?
- 17. X509 RSA彈性城堡標誌並驗證Java中的純文本
- 18. 溫莎城堡:使用配置文件
- 19. 無法更新java.security文件 - 想要添加彈性城堡提供程序
- 20. 如何使用彈性城堡庫編碼ip地址?
- 21. 如何使用隨機密鑰與充氣城堡加密電子郵件
- 22. 如何在彈性城堡(Java)中將DER DSA私鑰讀取爲AsymmetricKeyParameter
- 23. java.io.EOFException:PartialInputStream中流的過早結束 - 彈性城堡
- 24. 如何在Bouncy城堡c#中使用RSA打開密鑰?
- 25. 在android中使用海綿城堡
- 26. 城堡溫莎在XML配置的動態屬性
- 27. Java/Android充氣城堡ClassNotFoundException
- 28. 使用Java加密/解密文件
- 29. 在Java充氣城堡AES 256解密問題
- 30. 使用與溫莎城堡
去與cb160的鏈接,並且一定要得到bouncycastle的源代碼。 API文檔大多很差,通常很差。但是,源代碼非常易讀,我經常用它來回答諸如「RijndaelEngine需要什麼樣的CipherParameters?」等問題。只要看看相關的Rijndael方法就會很明顯。 – 2010-01-12 23:22:08