Tôi đang cố gắng để digitally sign an XML document sử dụng Java. Tôi đã có một thực hiện làm việc với một số tài liệu tham khảo tôi đã tìm thấy rằng sử dụng thực hiện khác nhau trong gói javax.xml.crypto.dsig
.Có cách nào dễ dàng hơn để ký một tài liệu XML trong Java không?
Tuy nhiên, thực hiện hiện tại của tôi cũng giống như many của examples Tôi đã nhìn vào - nó khá dài dòng và liên quan đến sử dụng không ít hơn 23 lớp API khác nhau từ java.xml.crypto.dsig
, javax.xml.transform
, và java.security
gói, trong số những người khác. Tôi cảm thấy như mình đã bước vào vùng đất factory factory factory và tôi mất vài giờ để tìm ra những gì đang diễn ra.
Câu hỏi của tôi là, có cách nào dễ dàng hơn để thực hiện việc này không? Nếu tôi đã có public/private key files và tôi muốn thêm một <Signature/>
đến một tài liệu XML, là có một thư viện ra khỏi đó mà chỉ cho phép tôi gọi cái gì đó như:
OutputStream signFile(InputStream xmlFile, File privateKey)
... mà không cần tất cả XMLSignatureFactory/CanonicalizationMethod/DOMSignContext craziness?
Tôi không hiểu nhiều về mật mã và API do Java cung cấp dường như khá khó khăn đối với các nhà phát triển giống như bản thân tôi đang cố làm quen với ký điện tử. Nếu tất cả điều này là cần thiết hoặc hiện tại không có API thân thiện hơn ở đó, điều đó là tốt và tôi sẵn sàng chấp nhận điều đó như một câu trả lời. Tôi chỉ muốn biết nếu tôi không cần thiết đi theo con đường khó khăn ở đây.
Là một giải pháp thay thế, tôi đã có thể thực hiện cuộc gọi hệ thống một lót và sử dụng http://www.aleksey.com/xmlsec/ ký XML. Tôi không đăng câu trả lời này vì câu trả lời không nằm trong giới hạn của câu hỏi (ví dụ: "trong Java"). –