2016-04-27 7 views
10

मैंने मॉड्यूलस, सार्वजनिक एक्सपोनेंट और निजी एक्सपोनेंट दिया है और मुझे एंड्रॉइड पर उन मूल्यों को सुरक्षित रूप से स्टोर करने की आवश्यकता है। मैं उसे कैसे प्राप्त कर सकता हूं?Android पर सुरक्षित रूप से मॉड्यूलस, सार्वजनिक एक्सपोनेंट और निजी एक्सपोनेंट को कैसे स्टोर करें?

अधिकांश उदाहरण एन, डी, ई पैरामीटर प्राप्त किए बिना सार्वजनिक और निजी कुंजी बना रहे हैं। मैंने उन एन, ई, डी मान दिए हैं और उन्हें सुरक्षित रूप से स्टोर करना चाहते हैं और फिर उन मानों का उपयोग अपने आईसीसी पब्लिक की सर्टिफिकेट बनाने और मेरे डायनामिक डेटा पर हस्ताक्षर करने के लिए भी करते हैं।

मैं इसे कैसे प्राप्त कर सकता हूं?

+1

क्या आप एंड्रॉइड पर डेटा स्टोर करने का सबसे सुरक्षित तरीका ढूंढ रहे हैं? – Devrim

+0

हां, यह आईसीसी पब्लिक कुंजी घटक (निजी, सार्वजनिक, मॉड्यूलस) उत्पन्न एसी प्रतिक्रिया बनाने के लिए आवश्यक हैं और मुझे उन्हें एंड्रॉइड पर सुरक्षित रूप से स्टोर करना चाहिए। –

+0

@ फिलिप ने तब आपके प्रश्न का उत्तर दिया। आपको "एंड्रॉइड कीस्टोर सिस्टम" के बारे में पढ़ना चाहिए जो एंड्रॉइड 4.3 (एपीआई लेवल 18) में पेश किया गया है। – Devrim

उत्तर

6

Keystore System का उपयोग करें।

setEntry() आपको KeyStore.Entry लागू करने वाली किसी भी वस्तु को स्टोर करने की अनुमति देता है। यदि आप डेटा को स्टोर करने की आवश्यकता है जो डिफ़ॉल्ट रूप से फिट नहीं है, तो आप बस अपना खुद का उप प्रकार लागू कर सकते हैं। (RSAPrivateCrtKey है, जिसे आप PrivateKeyEntry में स्टोर कर सकते हैं।)

2

शायद, एंड्रॉइड डिवाइस पर एकमात्र सुरक्षित स्टोरेज एंड्रॉइड कीस्टोर सिस्टम होगा।

मुख्य सामग्री कभी भी एप्लिकेशन प्रक्रिया में प्रवेश नहीं करती है।

और

कुंजी सामग्री सुरक्षित हार्डवेयर के लिए बाध्य किया जा सकता है।

(http://developer.android.com/training/articles/keystore.html देखें)

इसके साथ समस्या यह है कि आप क्या आप इसे में स्टोर कर सकते हैं में प्रतिबंधित कर रहे हैं है। KeyChain क्लास आपको निजी कुंजी और प्रमाणपत्र श्रृंखला स्टोर करने की अनुमति देता है। हालांकि, कीस्टोर प्रदाता निम्नलिखित प्रकार की प्रविष्टियों का समर्थन करता है: डॉक्स के अनुसार PrivateKeyEntry, SecretKeyEntry, TrustedCertificateEntry। प्रैक्टिस में, SecretKeyEntry का उदाहरण डालने का प्रयास अपवाद का कारण बनता है।

मैं सुझाव देता हूं कि कीस्टोर में दो प्रविष्टियां डालें।

  1. KeyStore.PrivateKeyEntry है कि आप एक PrivateKey अपने आप हस्ताक्षरित प्रमाणपत्र है, जो आप पहले से करना होगा साथ
  2. KeyStore.TrustedCertificateEntry (मापांक और निजी प्रतिपादक KeyFactory साथ संयोजन के रूप में RSAPrivateKeySpec का उपयोग करके निर्मित) दिया दृष्टांत कर सकते हैं जावा कीटोल का उपयोग करके उत्पन्न करें और संपत्ति से रनटाइम पर लोड करें। यह परिभाषा से गुप्त नहीं होना चाहिए।
संबंधित मुद्दे