2016-08-23 5 views
9

मैं एपीआई 18 को लक्षित करते समय नीचे समकक्ष कोड कैसे प्राप्त करूं? नीचे कोड केवल एपीआई 23 और ऊपर के लिए काम करता है। एपीआई 18 कोड कितना सुरक्षित होगा, यह देखते हुए कि हम KeyGenParameterSpec का उपयोग नहीं कर सकते हैं और एपीआई 18 कोड बहिष्कृत एपीआई का उपयोग कर सकता है?एपीआई 18 के साथ एंड्रॉइड कीस्टोर एपीआई का उपयोग कैसे करें?

KeyGenerator keyGenerator = KeyGenerator.getInstance(
    KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore"); 

keyGenerator.init(new KeyGenParameterSpec.Builder(alias, 
    KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT) 
    .setBlockModes(KeyProperties.BLOCK_MODE_CBC) 
    .setKeySize(256) 
    .setUserAuthenticationRequired(true) 
    .setUserAuthenticationValidityDurationSeconds(400) 
    .setRandomizedEncryptionRequired(false) 
    .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7) 
    .build()); 

SecretKey key = keyGenerator.generateKey(); 

उत्तर

5

एंड्रॉइड कीस्टोर में सममित कुंजी उत्पादन और संग्रहण एंड्रॉइड 6.0 (एपीआई स्तर 23) से समर्थित है।

एंड्रॉइड कीस्टोर में असममित कुंजी उत्पादन और संग्रहण एंड्रॉइड 4.3 (एपीआई लेवल 18) के बाद से समर्थित है।

अधिक जानकारी के लिए यह दस्तावेज़ देखें: Android Keystore System

हालांकि कुछ समस्याएं भी हैं आप असममित कुंजी पीढ़ी का उपयोग कर सकते हैं। .. संदर्भ bellow का पालन करें

Asymmetric Key Generation

+0

वहाँ किसी भी तरह से आप उत्पन्न कर सकते हैं सममित कुंजी एपीआई स्तर 23 से पहले है? – Arst

0
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
    KeyPairGenerator generator = KeyPairGenerator.getInstance(KEY_ALGORITHM_RSA, AndroidKeyStore); 
    generator.initialize(new KeyGenParameterSpec.Builder(
     Constants.SADAD_ENCRYPTION_ALIAS, 
     KeyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_VERIFY) 
     .setDigests(
      KeyProperties.DIGEST_SHA256, 
      KeyProperties.DIGEST_SHA512) 
     .build() 
    ); 
    generator.generateKeyPair(); 
} else { 
    Calendar start = Calendar.getInstance(); 
    Calendar end = Calendar.getInstance(); 
    end.add(Calendar.YEAR, 1); 
    KeyPairGeneratorSpec spec = new KeyPairGeneratorSpec 
     .Builder(SadadApplication.getInstance().getApplicationContext()) 
     .setAlias(Constants.SADAD_ENCRYPTION_ALIAS) 
     .setSubject(new X500Principal("CN=Your Company ," + 
      " O=Your Organization" + 
      " C=Your Coountry")) 
     .setSerialNumber(BigInteger.ONE) 
     .setStartDate(start.getTime()) 
     .setEndDate(end.getTime()) 
     .build(); 
    KeyPairGenerator generator = KeyPairGenerator.getInstance(KEY_ALGORITHM_RSA, AndroidKeyStore); 

    generator.initialize(spec); 
    generator.generateKeyPair(); 
} 
संबंधित मुद्दे