से मैं के साथ एक निजी कुंजी उत्पन्न किया है:लोड RSA सार्वजनिक कुंजी फ़ाइल
openssl rsa –pubout -in private.key [-out file]
मैं के साथ कुछ संदेशों पर हस्ताक्षर करना चाहते हैं:
openssl genrsa [-out file] –des3
इस के बाद मैं के साथ एक सार्वजनिक कुंजी बना लेने के बाद मेरी निजी कुंजी, और इस तरह के कोड का उपयोग करके, मेरी सार्वजनिक कुंजी के साथ कुछ अन्य संदेशों को सत्यापित करें:
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);
}
}
मुझे अपने निजी रूपांतरित करने का समाधान मिला पीकेसीएस 8 प्रारूप की कुंजी और इसे लोड करें। यह इस तरह से कुछ कोड के साथ काम करता है:
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);
}
और अंत में मेरे सवाल है: मैं कैसे एक फ़ाइल से मेरी आरएसए सार्वजनिक कुंजी लोड करूं?
मुझे लगता है कि मुझे अपनी सार्वजनिक कुंजी फ़ाइल को x509 प्रारूप में परिवर्तित करने की आवश्यकता है, और X509EncodedKeySpec का उपयोग करें। लेकिन मैं यह कैसे कर सकता हूं?
का उल्लेख कर सकते http://codeartisan.blogspot.com/2009/05/public-key-cryptography-in-java.html – Zaki
देखें ओह आपको बहुत बहुत धन्यवाद! यह समाधान काम है! –