2008-12-03 30 views
17

Tôi đã có thể tìm thấy thông tin về mã hóa đối xứng và băm nhưng tôi đã gặp khá nhiều rắc rối khi tìm kiếm nhiều thông tin về bất kỳ loại mã hóa khóa công khai nào cho java. Điều tôi muốn làm là tạo một bằng chứng đơn giản về chương trình khái niệm lấy một chuỗi (hoặc một tệp mà tôi cho là), mã hóa nó bằng khóa công khai và sau đó giải mã nó bằng khóa riêng.Bất kỳ hướng dẫn nào về mã hóa khóa công khai trong java?

Bất kỳ liên kết hoặc ví dụ hướng dẫn nào đều sẽ được đánh giá cao. Tôi chỉ muốn làm một cái gì đó chứng tỏ làm thế nào bạn có thể sử dụng mã hóa khóa công khai trong Java.

Trả lời

12

Có một số tài nguyên trên web về điều đó. Về cơ bản nó xoay quanh lớp KeyPairGenerator.

Xem http://www.informit.com/articles/article.aspx?p=170967&seqNum=4 cho một chương trình mẫu.

+0

Đối với ví dụ bạn đã cung cấp, tôi nhận được lỗi sau: Không thể tìm thấy bất kỳ nhà cung cấp nào hỗ trợ RSA/NONE/PKCS1PADDING. Tôi tự hỏi nếu bản sao java của máy tính này không có nó thực hiện. –

+3

Thử dùng RSA/ECB/PKCS1Padding. ECB có hiệu quả là "không" chế độ chặn chuỗi. – erickson

13

Thông thường, bạn sử dụng mã hóa khóa công khai để mã hóa khóa đối xứng, một phần vì mã hóa khóa công khai rất chậm. Thông thường, bạn sẽ gửi cho người nhận nội dung sau để họ có thể giải mã thư của bạn:

  1. Khóa đối xứng, được mã hóa bằng khóa công khai của người nhận.
  2. Tham số cho thuật toán được sử dụng, thường là vectơ khởi tạo cho mật mã đối xứng.
  3. Mã định danh cho thuật toán mã hóa được sử dụng.
  4. Bản mã — thông điệp thực tế, được mã hóa theo mật mã đối xứng.

Tôi đã tìm thấy mã mẫu trong số JCE documentation đủ để làm cho mọi thứ hoạt động.

Định dạng chuẩn để gói tất cả thông tin này lên là Cú pháp thông báo mật mã hoặc CMS, được sử dụng bởi S/MIME trong các ứng dụng email. Tôi khuyên bạn nên sử dụng Bouncy Castle's libraries; chúng rất chắc chắn, khá đơn giản và được duy trì tích cực. Tài liệu tham khảo hơi yếu, nhưng chúng cung cấp các ví dụ mã.

+0

Trong thiết bị Android bắt nguồn từ, chúng tôi không thể đặt khóa ở phía máy khách. Vậy chúng ta có thể làm gì bây giờ để giải mã tập tin trong máy khách được mã hóa ở phía máy chủ? Vui lòng xem câu hỏi liên quan của tôi: http://stackoverflow.com/questions/30951805/protected-document-viewer –

+0

@ Mr.Hyde Những gì bạn đang cố gắng làm là không thể. Đó là lý do tại sao mọi người jailbreak thiết bị của họ: để vô hiệu hóa DRM mà nhà sản xuất đang cố gắng giữ lại trên thiết bị. Bạn không thể cho ai đó một bí mật và vẫn kiểm soát được những gì họ làm với nó. – erickson

+0

Vì vậy, giải pháp tốt nhất gần nhất là gì? Là nó ổn? : Tạo khóa riêng cho mỗi máy chủ tệp được mã hóa trên máy chủ và gửi tệp khóa và mã hóa cho khách hàng. –

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