2011-01-11 8 views
6

मैंने एईएस 128 बिट कुंजी का उपयोग कर 4.2 एमबी। डीसीएफ फाइल को डिक्रिप्ट करने का प्रयास किया, लेकिन इसे 33 सेकंड में डिक्रिप्ट करने के लिए लिया (फ़ंक्शन cipher.doFinal (डेटा) पर, क्या यह सामान्य है?एंड्रॉइड में धीमी एईएस डिक्रिप्शन

long start = System.currentTimeMillis()/1000L; 
      try { 
       SecretKeySpec skeySpec = new SecretKeySpec(key, "AES"); 
       Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); 
       cipher.init(Cipher.DECRYPT_MODE, skeySpec, ivspec); 

       android.util.Log.d("TEST", "Start decoding...." + String.valueOf(length)); 

       byte[] decrypted = cipher.doFinal(content); 

       File file2 = new File(Environment.getExternalStorageDirectory().getPath() + "/test.mp3"); 
       OutputStream os = new FileOutputStream(file2); 
       os.write(decrypted); 
      } catch (Exception ex) { 
       ex.printStackTrace(); 
      } 
      long end = System.currentTimeMillis()/1000L; 

      android.util.Log.d("TEST","Time "+ String.valueOf(end-start)); 
+0

मैं इस हार्डवेयर पर निर्भर करेगा उम्मीद -।? मेरी इच्छा उदाहरण के लिए, कुछ बातें एक बहुत अपनी पत्नी के जंगल की आग की तुलना में तेज करता है आप – Squonk

+0

@MisterSquonk पर इस कोशिश कर रहे हैं, मैं करने की कोशिश की यह एम्यूलेटर पर, मेरे सैमसंग गैलेक्सी स्पािका पर लगभग 30-33 सेकंड लग गए, इसमें लगभग 25-30 सेकेंड लगे। –

+0

यदि आप समझते हैं कि मैं इस तरह की फाइल कैसे बनाऊंगा, फिर से डिक्रिप्टिंग, मैं अपने एचटीसी डिजायर (फियोयो) पर अपना कोड आज़माउंगा यदि परिणाम जानने के लिए आपके लिए इसका कोई उपयोग होगा। – Squonk

उत्तर

2

आप बेंच के लिए समय फ़ाइल लेखन के बिना लिया कोशिश चाहिए, जैसे कि cipher.doFinal() करने के लिए कॉल के बाद ठीक पहले और सही System.currentTimeMillis() फोन:

कोड स्निपेट है।

कहा जा रहा है, एक Android आधारित फोन आम तौर पर हाल ही में एक हाथ प्रोसेसर 500 मेगाहर्ट्ज या अधिक पर क्लॉक का उपयोग करता है, और इस तरह के एक जानवर सैद्धांतिक रूप से एईएस एन्क्रिप्ट या प्रति सेकंड डेटा के कई मेगाबाइट एईएस डिक्रिप्ट करने के लिए सक्षम है।

हालांकि, एंड्रॉइड कोड लगभग -12 वर्चुअल मशीन का उपयोग करता है जिसे Dalvik कहा जाता है। एंड्रॉइड-2.2 से पहले, यह एक दुभाषिया (कोई जेआईटी कंपाइलर नहीं है), जिसका अर्थ है कि यह कंप्यूटिंग-गहन कार्यों के लिए थोड़ी धीमी है। यदि आपके द्वारा देखे जाने वाले औसत प्रदर्शन वास्तव में एईएस ऑपरेशन (और फ़ाइल लेखन नहीं) से आता है तो व्यावहारिक उत्तर यह है कि आपका वीएम जावा में लिखा गया एईएस कार्यान्वयन प्रदान करता है और डाल्विक के साथ व्याख्या करता है। उस स्थिति में, बेहतर वीएम कार्यान्वयन की उपस्थिति की उम्मीद के अलावा थोड़ा इलाज है (एक वीएम एईएस के लिए देशी कोड कार्यान्वयन का उपयोग कर सकता है; एंड्रॉइड 2.2 और बाद में, डाल्विक के पास JIT compiler है जो कोड निष्पादन के प्रदर्शन को बढ़ावा देना चाहिए) ।

+0

हाय थॉमस, thanx। मैंने फ़ाइल लेखन को हटा दिया है और इसमें सिफर गैलेक्सी स्पाइका (एक्लेयर) पर फियोयो एमुलेटर या 25-30 सेकेंड पर सिफर.डोफिनल फ़ंक्शन पर 30-33 सेकेंड लग गए हैं। मेरे दोस्त ने ब्लैकबेरी पर एक ही काम किया और इसमें लगभग 8 सेकंड लग गए। –

0

AFAIK, वहाँ

:-(एंड्रॉयड API के माध्यम से एआरएम चिप का एईएस एन्क्रिप्शन/डिक्रिप्शन हार्डवेयर के लिए पहुँच प्राप्त करने के कोई रास्ता नहीं है यह दुर्भाग्य से गूगल की ओर से एक विशाल निरीक्षण है ... दूसरे प्लेटफार्म पर एईएस का उपयोग कर बनाता है एक बहुत तेजी से ....

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