स्थिति:एंड्रॉइड में स्ट्रिंग आरएसए एन्क्रिप्शन
मुझे एक ऐसा एप्लिकेशन चाहिए जो आरएसए का उपयोग करके स्ट्रिंग को एन्क्रिप्ट करता है। मेरे पास आरएस/कच्चे में संग्रहीत सार्वजनिक कुंजी है, और क्योंकि कुंजी 1024 बिट्स है, परिणामी स्ट्रिंग 128 बाइट लंबी होनी चाहिए। हालांकि, एन्क्रिप्टिंग के बाद परिणामी स्ट्रिंग 124 लंबी है, और नतीजतन, डिक्रिप्शन दुर्घटनाग्रस्त हो जाता है।
समारोह मैं सार्वजनिक कुंजी ठीक करने के लिए उपयोग कर रहा हूँ है:
private PublicKey getPublicKey() throws Exception {
InputStream is = getResources().openRawResource(R.raw.publickey);
DataInputStream dis = new DataInputStream(is);
byte [] keyBytes = new byte [(int) is.available()];
dis.readFully(keyBytes);
dis.close();
X509EncodedKeySpec spec = new X509EncodedKeySpec(keyBytes);
KeyFactory kf = KeyFactory.getInstance("RSA");
return kf.generatePublic(spec);
}
और समारोह है कि मैं एन्क्रिप्ट करने के लिए उपयोग कर रहा हूँ के कोड:
private String rsaEncrypt (String plain) {
byte [] encryptedBytes;
Cipher cipher = Cipher.getInstance("RSA");
PublicKey publicKey = getPublicKey();
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
encryptedBytes = cipher.doFinal(plain.getBytes());
String encrypted = new String(encryptedBytes);
return encrypted;
}
पीडी: कोड पूरी तरह से डेस्कटॉप एप्लिकेशन में काम करता है, यह सिर्फ एंड्रॉइड में दुर्घटनाग्रस्त हो जाता है।
मैं वास्तव में किसी भी मदद की सराहना करता हूं,
आपको बहुत धन्यवाद।
धन्यवाद, बस इसे हल करें! – Ullfoll
ग्रेट स्पष्टीकरण! – Roylee