tôi đã tạo ra một chìa khóa riêng với:tải RSA khóa công khai từ file
openssl genrsa [-out file] –des3
Sau này, tôi đã tạo ra một khóa công khai với:
openssl rsa –pubout -in private.key [-out file]
Tôi muốn đăng ký một số thông báo với khóa cá nhân của tôi và xác minh một số tin nhắn khác bằng khóa công khai của tôi, sử dụng mã như sau:
public String sign(String message) throws SignatureException{
try {
Signature sign = Signature.getInstance("SHA1withRSA");
sign.initSign(privateKey);
sign.update(message.getBytes("UTF-8"));
return new String(Base64.encodeBase64(sign.sign()),"UTF-8");
} catch (Exception ex) {
throw new SignatureException(ex);
}
}
public boolean verify(String message, String signature) throws SignatureException{
try {
Signature sign = Signature.getInstance("SHA1withRSA");
sign.initVerify(publicKey);
sign.update(message.getBytes("UTF-8"));
return sign.verify(Base64.decodeBase64(signature.getBytes("UTF-8")));
} catch (Exception ex) {
throw new SignatureException(ex);
}
}
Tôi tìm thấy giải pháp để chuyển đổi riêng tư của mình để định dạng PKCS8 và tải nó. Nó hoạt động với một số mã như thế này:
public PrivateKey getPrivateKey(String filename) throws Exception {
File f = new File(filename);
FileInputStream fis = new FileInputStream(f);
DataInputStream dis = new DataInputStream(fis);
byte[] keyBytes = new byte[(int) f.length()];
dis.readFully(keyBytes);
dis.close();
PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(keyBytes);
KeyFactory kf =
KeyFactory.getInstance("RSA");
return kf.generatePrivate(spec);
}
Và cuối cùng câu hỏi của tôi là: Làm thế nào để tải Public Key RSA của tôi từ một tập tin?
Tôi nghĩ có lẽ tôi cần chuyển đổi tệp khóa công khai của mình thành định dạng x509 và sử dụng X509EncodedKeySpec. Nhưng làm thế nào tôi có thể làm điều này?
Xem http://codeartisan.blogspot.com/2009/05/public-key-cryptography-in-java.html – Zaki
Oh cảm ơn bạn rất nhiều! Giải pháp này là công việc! –