2012-04-08 30 views
11

Tôi đã viết một nhà cung cấp bảo mật tùy chỉnh cho AES/CBC/PKCS5Padding. Điều đó hoạt động tốt.Tôi làm cách nào để sử dụng Java để sử dụng nhà cung cấp bảo mật của mình?

Tôi cần thêm những cài đặt nào để thêm vào Provider để Java nhận ra đó là nhà cung cấp hợp lệ cho thuật toán trên? Tôi đã có

public class FooBarProvider extends Provider { 
    public FooBarProvider() { 
    super("FooBar", 1.0, "Provider for AES."); 
    put("Cipher.AES", "foo.bar.AESCipher"); 
    } 
} 

nơi đối số thứ hai là thực tế CipherSpi hoạt động. Tôi đăng ký một thực tế là nó hỗ trợ CBC và PKCS5Padding ở đâu? Hiện nay yêu cầu cho một liên quan Cipher không trả lại một thể hiện của lớp học của tôi:

Security.insertProviderAt(new FooBarProvider(), 1); 
Cipher cip = Cipher.getInstance("AES/CBC/PKCS5Padding"); 
System.out.println(cip.getProvider()); //prints "SunJCE version 1.7" 

Trả lời

7

Viết mã là phần rất đơn giản nhất của quy trình. Bạn đã khai báo rằng các lớp của bạn cung cấp một bản thực thi Cipher cho AES. Dòng này:

put("Cipher.AES", "foo.bar.AESCipher"); 

là tất cả những gì bạn cần để hoàn thành nhiệm vụ. Cũng lưu ý rằng việc triển khai của bạn sẽ tự động được gọi cho tất cả các kết hợp của chế độđệm, vì bạn đã đăng ký triển khai mã hóa ở cấp thuật toán.

Có nói rằng, viết mã là phần dễ dàng. Bạn đang tạo một mật mã, vì vậy bạn sẽ cần phải ký JAR của bạn trước khi nó có thể được cài đặt và cấu hình như một nhà cung cấp. Vì quá trình này có liên quan đến phần nào nên tôi sẽ không sao chép tất cả ở đây, thay vào đó tôi sẽ giới thiệu bạn đến số Oracle Guide on How to implement a Provider. Đó là một nguồn tuyệt vời cho nhiệm vụ này.

Nếu bạn làm theo hướng dẫn mà vẫn gặp sự cố, bạn có thể cần phải tải xuống và cài đặt JCE Unlimited Strength Policy phù hợp với JDK đã cài đặt của mình.

+0

Vì vậy, tôi thậm chí không thể cài đặt nó để kiểm tra việc thực hiện nó? –

2

Các tài liệu Java Crypto mô tả các cơ chế để đăng ký một lớp học Provider:

Ngắn phiên bản là:

  1. Đặt JAR của nhà cung cấp trên đường dẫn lớp hoặc trong thư mục tiện ích mở rộng của cài đặt Java.
  2. Đăng ký nhà cung cấp:
    • chỉnh sửa các tập tin java.security cấu hình (trong quá trình cài đặt Java), hoặc
    • lúc chạy, gọi Security.addProvider hoặc Security.insertProviderAt.
+0

Tôi có phần đó (lưu ý lệnh gọi 'insertProviderAt' ở trên), nhưng cú pháp để đăng ký mật mã của tôi hỗ trợ CBC và PKCS5Padding là gì? –

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