2014-07-23 8 views
5

यह अभी शुरुआत सवाल,वापस जाने के लिए कैसे बाइट [] जब CryptoStream (DESCryptoServiceProvider) का उपयोग कर डिक्रिप्ट

हर मैं इंटरनेट पर खोज है, DESCryptoServiceProvider समारोह हमेशा एक स्ट्रिंग लौटने के साथ डिक्रिप्ट।

हम वापसी के लिए बाइट [] कैसे प्राप्त कर सकते हैं?

यह कोड है। हर प्रकार की सहायता के लिए आपका धन्यवाद।

DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider(); 
cryptoProvider.Padding = PaddingMode.None; 
cryptoProvider.Mode = CipherMode.CBC; 

MemoryStream memoryStream = new MemoryStream(value); 
CryptoStream cryptoStream = new CryptoStream(memoryStream, 
cryptoProvider.CreateDecryptor(password, initVector), CryptoStreamMode.Read); 
StreamReader reader = new StreamReader(cryptoStream); 

return reader.ReadToEnd();    
//how to return byte[]; 

उत्तर

17

मैं भी इस समस्या थी, और मैं मुझे इस मुद्दों के साथ मदद करने के लिए कुछ कार्यों के साथ एक class बनाया।

समारोह क्रिप्टोग्राफी प्रदर्शन करने के लिए है:

private byte[] PerformCryptography(ICryptoTransform cryptoTransform, byte[] data) 
     { 
      using (var memoryStream = new MemoryStream()) 
      { 
       using (var cryptoStream = new CryptoStream(memoryStream, cryptoTransform, CryptoStreamMode.Write)) 
       { 
        cryptoStream.Write(data, 0, data.Length); 
        cryptoStream.FlushFinalBlock(); 
        return memoryStream.ToArray(); 
       } 
      } 
     } 

ICryptoTransform या तो एक spezific encryptor या decryptor है।

public byte[] Encrypt(byte[] data) 
{ 
    if (CanPerformCryptography(data)) 
    { 
     using (var encryptor = _algorithm.CreateEncryptor(_key, _iv)) 
     { 
      return PerformCryptography(encryptor, data); 
     } 
    } 
    return data; 
} 

public byte[] Decrypt(byte[] data) 
{ 
    if (CanPerformCryptography(data)) 
    { 
     using (var decryptor = _algorithm.CreateDecryptor(_key, _iv)) 
     { 
      return PerformCryptography(decryptor, data); 
     } 
    } 
    return data; 
} 
+0

समाधान साहब के लिए धन्यवाद, यह वास्तव में काम करता है:

इस विधि सममित altorithm के

बस उदाहरण के लिए, एन्क्रिप्शन और डिक्रिप्शन देखो की तरह की विधियों के लिए काम करता है। –

+0

हैलो टॉमटॉम, मैं प्रदर्शन क्रिप्टोग्राफी करने के लिए प्रयास करने का प्रयास करता हूं, यदि _key 0 (0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00) का 8key का उपयोग करते हुए _key पकड़ लेता है। मुझे लगता है कि डिक्रिप्टर ने पाया कि कुंजी शून्य है (इस मामले में शून्य नहीं है लेकिन 0x00 के 8 बाइट)। इसे सही कैसे बनाया जाए? thx फिर से –

+1

मैं अपवाद पकड़ता हूं, इसकी शून्य कुंजी नहीं है लेकिन कमजोर कुंजी अपवाद है। और मुझे समाधान मिला [यहां] (http://social.msdn.microsoft.com/Forums/en-US/8fdfcce7-3a8a-4271-8557-3df715c80df8/weak-key-cryptographic-exception) –

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

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