2010-05-28 20 views
60

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ì?

+7

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

Trả lời

56

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.

+3

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

8

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.

+2

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 . –

+1

FYI Điều này không đúng Java8 (Từ Oracle) ít nhất. –

15

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 đó.

+4

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

+0

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. –

Các vấn đề liên quan