2011-10-22 11 views
7

मैं अपने एंड्रॉइड एप्लिकेशन में लाइसेंसिंग लागू कर रहा हूं, और 20 बाइट्स की एक सरणी है जिसे सर्वर मैनेज्ड पॉलिसी ऑब्जेक्ट में पास किया गया एईएसओबफ्यूसेटर में पारित करने की आवश्यकता है। क्या यह सरणी कोड चलाने के हर बार यादृच्छिक रूप से उत्पन्न हो सकती है, या इसे हार्डकोड किया जाना चाहिए?एंड्रॉइड: क्या एईएसओबीफ्यूसेटर को पास किए गए यादृच्छिक एसएएलटी बाइट्स को वही रहने की आवश्यकता है?

अभी मैं बेतरतीब ढंग से इस तरह नमक पैदा कर रहा हूँ:

private static final byte[] SALT; 

static { 
    Random random = new Random(); 
    random.setSeed(System.currentTimeMillis()); 
    byte[] buf = new byte[20]; 
    random.nextBytes(buf); 
    SALT = buf; 
} 

उत्तर

6

एक थोड़ी देर हो चुकी है, लेकिन हाँ: नमक ही संग्रहीत मूल्यों फिर डिक्रिप्ट करने के लिए सक्षम होने के लिए रहना चाहिए।

असल में सल्टिंग का मतलब है कि शब्दकोश हमलों को बहुत कठिन बनाने के लिए पासफ्रेज़ को यादृच्छिक बनाना है। How does a salt protect against a dictionary attack?

अद्यतन (एक साल बाद :) वैसे: एक यादृच्छिक जनरेटर की जगह में बाइट्स के लिए एक SecureRandom जनरेटर का उपयोग करें - यह है बेहतर (मैं विस्तार में जा सकते हैं, लेकिन आप उस कहीं और साथ ही पा सकते हैं। http://docs.oracle.com/javase/7/docs/api/java/security/SecureRandom.html)

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