回答
一般來說,你是需要與ECC進行hybrid encryption。例如,ECIES基本上是對稱加密之後的一個關鍵協議。所以你不能直接用ECIES加密任何東西,ECIES是最常用的ECC加密方法。基本上你應該把它和對稱密碼結合起來。這實際上也是大部分時間RSA加密的最佳方案。
正如你可以看到可以使用CBC模式& PKCS#7填充直接使用此作爲Cipher
,但大的報頭的提防(117個字節384曲線,沒有更小)。這是執行密鑰派生所必需的。確保公鑰是經過適當驗證(我不確定Bouncy Castle的代碼在這方面,沒有看過它)。
public static void main(String[] args) throws Exception {
Security.addProvider(new BouncyCastleProvider());
KeyPairGenerator ecKeyGen = KeyPairGenerator.getInstance("EC", BouncyCastleProvider.PROVIDER_NAME);
ecKeyGen.initialize(new ECGenParameterSpec("brainpoolP384r1"));
// doesn't work, which means we are dancing on the leading edge :)
// KeyPairGenerator ecKeyGen = KeyPairGenerator.getInstance("EC");
// ecKeyGen.initialize(new ECGenParameterSpec("secp384r1"));
KeyPair ecKeyPair = ecKeyGen.generateKeyPair();
System.out.println("What is slow?");
Cipher iesCipher = Cipher.getInstance("ECIESwithAES");
iesCipher.init(Cipher.ENCRYPT_MODE, ecKeyPair.getPublic());
byte[] ciphertext = iesCipher.doFinal(com.google.common.base.Strings.repeat("owlstead", 1000).getBytes());
iesCipher.init(Cipher.DECRYPT_MODE, ecKeyPair.getPrivate());
byte[] plaintext = iesCipher.doFinal(ciphertext);
System.out.println(Hex.toHexString(ciphertext));
System.out.println(new String(plaintext));
}
BUT什麼是Bouncy Castle爲ECC提供的實現,它是否也使用對稱算法它......也可以用它來加密大文件嗎? @owlstead ..非常感謝 – 2014-11-25 09:55:33
當然。在1.51中,它使用CBC加密,所以應該是安全的機密(**如果**填充的話是不可能的)。被警告以前的版本[使用ECB](http://bouncy-castle.1462172.n4.nabble.com/ECC-with-ECIES-Encrypt-Decrypt-Questions-td4656750.html),這是不安全的。 – 2014-11-25 23:59:24
- 1. 使用ECC Curve25519在Java中加密/解密數據
- 2. .Net |加密| ECC |如何使用.net框架執行ECC加密解密?
- 3. ActionScript3和Java加密/解密
- 4. AES加密和解密Java
- 5. C#(加密)和Java(解密)之間的AES加密/解密
- 6. rc4在java中的加密和解密
- 7. Java加密/解密
- 8. 加密Java和解密C#和反向
- 9. PHP和Java加密和解密例程
- 10. C#和Java之間的加密/解密
- 11. Java和Android之間的加密/解密
- 12. 文件加密和解密在Java中,不工作解密
- 13. JavaScript的加密-java解密
- 14. 加密和解密
- 15. 加密和解密
- 16. 加密和解密
- 17. 加密和解密
- 18. Java加密和PHP解密(RIJNDAEL)
- 19. RSA加密用Java/.NET和解密.NET
- 20. CryptoJS AES加密和Java AES解密
- 21. PGP使用Java加密和解密
- 22. Java加密和C#解密問題
- 23. 加密和解密密碼
- 24. ECIES加密/解密Java
- 25. Java加密C#解密
- 26. C#/ Java | AES256加密/解密
- 27. AES加密C#解密Java?
- 28. Java RSA加密 - 解密.NET
- 29. 加密PHP,解密Java
- 30. RSA .NET加密Java解密
java.security.InvalidKeyException:格式錯誤:需要RAW字節...當IO嘗試使用Sun提供程序對ECC文件進行加密時,出現此錯誤。任何人都可以知道是什麼導致了這個錯誤 – 2014-11-24 19:14:02
任何人都可以告訴我如何設置FlexiProvider的類路徑使用它的ECC算法@ Artjom B. – 2014-11-24 20:28:07