Tại sao mọi người sử dụng bouncycastle thay vì Phần mở rộng Mật mã Java? Sự khác biệt là gì?Tại sao mọi người sử dụng bouncycastle thay vì nhà cung cấp JCE được tích hợp sẵn của Java? Sự khác biệt là gì?
Trả lời
BouncyCastle có nhiều hơn cipher suites and algorithms so với default JCE do Sun cung cấp.
Ngoài ra, BouncyCastle có rất nhiều tiện ích để đọc các định dạng phức tạp như PEM và ASN.1 mà không có người lành mạnh nào muốn tự viết lại.
Mặt trời không bao giờ có ý định trở thành nhà cung cấp mật mã đầy đủ. Đó là lý do tại sao JCE sử dụng khung nhà cung cấp mà BC hỗ trợ http://bouncycastle.org/specifications.html#install. Bất kỳ người dùng nào của BC đều sẽ khôn ngoan khi sử dụng nó thông qua các API JCE khi có thể. – nicerobot
Trên máy chủ hoặc máy tính để bàn, tôi không thấy bất kỳ lý do nào để sử dụng BC trừ khi bạn phải xử lý một số mật mã hoặc định dạng cũ không được Sun JCE hỗ trợ.
Tuy nhiên, nhiều JRE không đi kèm với nhà cung cấp JCE, như trên môi trường di động hoặc nhúng. BC có ích trong những trường hợp như vậy.
Trên máy chủ, chắc chắn có một lý do, nếu máy chủ của bạn đang sử dụng TLS và bạn quan tâm đến bảo mật (nếu không, tại sao bạn sử dụng TLS?). Các bộ mã hóa kèm theo JCE chỉ bao gồm AES ở chế độ CBC, có một số vấn đề đã biết: http://googleonlinesecurity.blogspot.dk/2013/11/a-roster-of-tls-cipher-suites-weaknesses.html . –
FYI Điều này không đúng Java8 (Từ Oracle) ít nhất. –
Lâu đài Bouncy có nguồn gốc từ Úc và do đó không thuộc phạm vi Export of cryptography from the United States.
Sẽ rất hữu ích nếu bạn ở ngoài Hoa Kỳ và bạn cần quản lý các kích thước khóa chính xác hơn mức cho phép của giới hạn đó. Trong trường hợp đó bạn không được phép sử dụng phần mềm từ Hoa Kỳ cho điều đó.
Tôi tự hỏi có bao nhiêu hạn chế thực sự vẫn còn, anno 2016? Theo tôi hiểu, không còn giới hạn về kích thước khóa miễn là bạn đăng ký với Cục Công nghiệp và Bảo mật của Bộ Thương mại Mỹ (BIS), điều mà tôi đoán là Oracle đang làm. Nhưng các quy định là khó hiểu (chơi chữ). – peterh
Ugh, nếu tôi ở ngoài Hoa Kỳ, tôi không cần phải được cho phép bất cứ điều gì. Dự án có thể cần được phép giao hàng. –
- 1. BouncyCastle Cryptography nhà cung cấp thư viện sử dụng với applet trên Java 7u40
- 2. Nhà cung cấp bộ nhớ Cache cấp 2 NHibernate Sự khác biệt
- 3. Rắc rối tích hợp BouncyCastle Jar
- 4. Tại sao mọi người gọi jQuery $ alias là 'nhà máy'?
- 5. Nhà cung cấp khi nói về java là gì?
- 6. Tích hợp Facebook Connect với trang web sử dụng Nhà cung cấp thành viên ASP.NET
- 7. Nhà cung cấp loại F # và tích hợp liên tục
- 8. Tại sao MD5 là bắt buộc để khởi tạo JCE
- 9. Tại sao các nhà cung cấp DB lớn không cung cấp các API không đồng bộ thực sự?
- 10. Tại sao mọi người sử dụng i = i + 1 thay vì i + +?
- 11. Sự khác biệt giữa .NET, OLEDB và Nhà cung cấp Bản địa trong SSIS
- 12. Sự khác biệt của việc sử dụng addEventListener là gì?
- 13. Nhà cung cấp dịch vụ tích hợp liên tục SVN
- 14. Tại sao mọi người liên tục khuyên bạn nên sử dụng appConfig thay vì sử dụng tệp Cài đặt? (.NET)
- 15. Mọi người đang sử dụng gì thay vì IMultiValueConverters trong Windows 8?
- 16. Tại sao sử dụng mô hình nhà cung cấp trong ứng dụng ASP.Net MVC của greenfield có cảm giác ngược?
- 17. PBKDF2 với bouncycastle trong Java
- 18. Tại sao tạo DLL thay vì biên dịch mọi thứ thành một tệp thực thi lớn?
- 19. Tại sao sử dụng Celery thay vì RabbitMQ?
- 20. Nhà cung cấp/dịch vụ nào có sẵn trong module.config?
- 21. Luôn sử dụng v4 Fragments thay vì android.app.Fragment tích hợp sẵn?
- 22. Sự khác biệt giữa cấu trúc ngôn ngữ và chức năng "tích hợp sẵn" trong PHP là gì?
- 23. Tại sao nên sử dụng Function.prototype.bind thay vì Function.prototype.call?
- 24. Nội dung của rt.jar có thay đổi trên các nhà cung cấp JVM khác nhau không?
- 25. Tại sao tôi nên sử dụng nhà cung cấp nội dung tùy chỉnh trong Android?
- 26. Tại sao nên sử dụng GWT.create() thay vì mới?
- 27. Cách tốt nhất để xử lý các chi nhánh của chi nhánh nhà cung cấp trong SVN là gì?
- 28. Đọc file excel sử dụng nhà cung cấp OLEDB liệu
- 29. Google có cung cấp cho người dùng thử nghiệm để thử nghiệm tích hợp
- 30. Mẫu thiết kế được tích hợp sẵn của C# là gì?
JCE là một API chuẩn mà bất kỳ thuật toán mã hóa nào cũng có thể thực hiện để cho phép nó có thể truy cập được mà không cần phụ thuộc mã hóa vào nhà cung cấp. Nói cách khác, bằng cách sử dụng API JCE, bạn có thể chuyển đổi mật mã và nhà cung cấp mật mã mà không cần thay đổi mã của bạn (trong nhiều trường hợp). BC là một nhà cung cấp có nghĩa là họ thực hiện các thuật toán mã hóa có thể được truy cập thông qua các API JCE. Nếu một nhà cung cấp khác đi kèm với việc thực hiện thuật toán bạn muốn tốt hơn BC hoặc một thuật toán mới hơn, mạnh hơn, bạn có thể chuyển đổi mà không cần thay đổi mã của bạn (có thể). – nicerobot