2011-03-19 12 views
14

मैं एन्क्रिप्टेड डेटा स्टोर करने के लिए एक ऐप बना रहा हूं।पासवर्ड संग्रहित करना

this प्रश्न में, ओपी सी ने स्पष्ट रूप से उपयोगकर्ता के प्रमाण पत्र को स्टोर करने की सलाह दी।

लेकिन अगर मैं SecretKeySpec (जिसे डेटा एन्क्रिप्ट करने के लिए उपयोग किया जाता है) के साथ बनाया गया एन्क्रिप्टेड पासवर्ड स्टोर करना चाहते हैं तो क्या होगा? मेरी समझ से गुप्त कुंजी स्वयं एन्क्रिप्टेड है।

तो मैं इसे स्टोर और पुनर्प्राप्त कर सकता हूं।

नोट: मैं वरीयताओं को स्टोर करने का तरीका नहीं पूछ रहा हूं, अगर मेरी समझ है कि कैसे SecretKeySpec काम करता है और कैसे, क्रमबद्ध, serialize और एन्क्रिप्टेड पासवर्ड पुनर्प्राप्त करने के लिए।

संपादित: क्षमा करें, मैं निर्दिष्ट करना भूल यह एपीआई स्तर 4.

उत्तर

11

सीधे developer website से।

सुरक्षा के बारे में स्मार्ट बनें!

यह समझना महत्वपूर्ण है कि खाता प्रबंधक एक एन्क्रिप्शन सेवा या एक कीचेन नहीं है। यह सादा पाठ में, जैसे ही आप उन्हें पास करते हैं, वैसे ही खाता प्रमाण-पत्र संग्रहीत करता है। अधिकांश उपकरणों पर, यह एक विशेष चिंता नहीं है, क्योंकि यह उन्हें ऐसे डेटाबेस में संग्रहीत करता है जो रूट के लिए केवल पहुंच योग्य है। लेकिन जड़ वाले डिवाइस पर, क्रेडेंशियल डिवाइस पर एडीबी एक्सेस वाले किसी भी व्यक्ति द्वारा पठनीय होगा।

इस बात को ध्यान में रखते हुए, आपको खाता प्रबंधक को उपयोगकर्ता का वास्तविक पासवर्ड नहीं पारित करना चाहिए।addAccountExplicitly()। इसके बजाय, आपको एक क्रिप्टोग्राफ़िक रूप से सुरक्षित टोकन स्टोर करना चाहिए जो किसी हमलावर के लिए सीमित उपयोग होगा। यदि आपके उपयोगकर्ता प्रमाण-पत्र कुछ मूल्यवान की रक्षा कर रहे हैं, तो आपको ध्यान से कुछ ऐसा करने पर विचार करना चाहिए।

याद रखें: जब सुरक्षा कोड की बात आती है, तो "मिथबस्टर्स" नियम का पालन करें: घर पर यह कोशिश न करें! किसी भी कस्टम खाता कोड को लागू करने से पहले एक सुरक्षा पेशेवर से परामर्श लें।

अब सुरक्षा अस्वीकरण रास्ते से बाहर हैं, अब काम पर वापस आने का समय है। आपने पहले ही अपने कस्टम खाता कोड का मांस लागू कर लिया है; क्या बचा है पाइपलाइन है।

6

वाह के साथ संगत की जरूरत है। मुझे लगता है कि स्पष्ट रूप से उपयोगकर्ता के पासवर्ड को संग्रहीत करना एक गंभीर विकल्प नहीं है।

AccountManager देखें जो इस उद्देश्य के लिए डिज़ाइन किया गया था। यद्यपि यह आपके द्वारा लिंक किए गए प्रश्न में डाउनवॉटेड हो गया है, SampleSyncAdapter वास्तव में AccountManager उदाहरण के लिए एक अच्छा संसाधन है, और केवल मुझे पता है कि एसडीके के साथ शामिल है।

संपादित करें - लगभग javax.crypto, मुझे लगता है कि यह AccountManager से कम-स्तर API है। डॉक्स से:

कई सर्वरों एक प्रमाणीकरण टोकन, जो उपयोगकर्ता के वास्तविक पासवर्ड भेजे बिना सर्वर को एक अनुरोध को प्रमाणित करने के लिए इस्तेमाल किया जा सकता है के कुछ धारणा का समर्थन। (प्रमाणीकरण टोकन सामान्य रूप से एक अलग अनुरोध जो उपयोगकर्ता के साख शामिल नहीं है के साथ बनाया जाता है।) खाता प्रबंधक अनुप्रयोगों के लिए प्रमाणन टोकन उत्पन्न कर सकते हैं, तो आवेदन संभाल पासवर्ड के लिए सीधे जरूरत नहीं है। ऑथ टोकन आमतौर पर खाता प्रबंधक द्वारा पुन: प्रयोज्य और कैश किए जाते हैं, लेकिन समय-समय पर को रीफ्रेश किया जाना चाहिए। औपचारिकता टोकन को अमान्य करने के लिए टोकन को अमान्य करने के लिए खाता प्रबंधक जानता है कि इसे पुन: उत्पन्न करने की आवश्यकता है।

मुझे javax.crypto के स्तर पर इस से निपटने से नफरत होगी अगर मुझे यह नहीं करना पड़ेगा।

+0

अच्छा लगता है। बहुत अच्छा। लेकिन मुझे एपीआई स्तर 4 के साथ संगत रहने की जरूरत है (मैंने सवाल संपादित किया है, क्षमा करें)। वैसे भी +1 –

-4

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

संबंधित मुद्दे