में आरएसए एन्क्रिप्शन मैं एक प्रोग्राम लिख रहा हूं जो एंड्रॉइड में आरएसए को नियोजित करता है। मैं RSA कुंजियों हो रही है:एंड्रॉइड
String test ="test";
byte[] testbytes = test.getBytes();
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] cipherData = cipher.doFinal(testbytes);
String s = new String(cipherData);
Log.d("testbytes after encryption",s);
डिक्रिप्शन समारोह में मैं पाने के लिए वापस डेटा decrypting कर रहा हूँ: एक परीक्षण स्ट्रिंग एन्क्रिप्ट करने के लिए एन्क्रिप्शन समारोह का उपयोग करना
KeyPair kp = kpg.genKeyPair();
publicKey = kp.getPublic();
privateKey = kp.getPrivate();
मैं निम्नलिखित समस्या है मूल स्ट्रिंग
Cipher cipher2 = Cipher.getInstance("RSA");
cipher2.init(Cipher.DECRYPT_MODE, privateKey);
byte[] plainData = cipher.doFinal(cipherData);
String p = new String(plainData);
Log.d("decrypted data is:",p);
लॉग में मुद्रित 'पी' में डेटा मूल स्ट्रिंग "परीक्षण" से मेल नहीं खाता है। मैं इसमें कहां गलत हो रहा हूँ?
खैर क्या लॉग में मुद्रित किया जाता है? यदि आपके पास मिस्चैचिंग कुंजियां या गड़बड़ी वाले सिफर थे तो आपको एक अपवाद मिलेगा, गलत जवाब नहीं। –
यह भी ध्यान दें कि 'सिफरडाटा' एक यादृच्छिक-जैसी बाइनरी स्ट्रिंग होगी, इसलिए कच्चे बाइट्स ('स्ट्रिंग एस = न्यू स्ट्रिंग (सिफरडाटा) का उपयोग करके इसे स्ट्रिंग में परिवर्तित करना;') आपको अजीब परिणाम दे सकता है। –