2013-05-24 6 views
7

मैं पर डिक्रिप्ट पासवर्ड काम कर रहा हूँ और मैं इस त्रुटि पर अटक:स्ट्रिंग शून्य लंबाई का नहीं हो सकता है। पैरामीटर नाम: OLDVALUE

String cannot be of zero length. Parameter name: oldValue

कृपया इस त्रुटि के बारे में मदद या मुझे डिक्रिप्शन के लिए किसी अन्य प्रोग्राम सुझाव देते हैं।

यहाँ पूर्ण कोड है:

string decryptpwd = string.Empty; 
UTF8Encoding encodepwd = new UTF8Encoding(); 
Decoder Decode = encodepwd.GetDecoder(); 
byte[] todecode_byte = Convert.FromBase64String(encryptpwd.Replace("+","")); 
int charcount = Decode.GetCharCount(todecode_byte, 0, todecode_byte.Length); 
char[] decode_char = new char[charcount]; 
Decode.GetChars(todecode_byte, 0, todecode_byte.Length, decode_char, 0); 
decryptpwd = new String(decode_char); 
return decryptpwd; 
+3

** बेस 64 एन्क्रिप्शन ** नहीं है। आपको ** हैश ** पासवर्ड होना चाहिए। – SLaks

+0

त्रुटि का कौन सा हिस्सा आप समझ नहीं पाते? आपका कोड समझ में नहीं आता है। – SLaks

+0

@ फ्री लांसर मेरा पूरा कोड है, मैं इस कोड का उपयोग वेबसाइट स्ट्रिंग decryptpwd = स्ट्रिंग से करता हूं।खाली; यूटीएफ 8 एन्कोडिंग encodepwd = नया यूटीएफ 8 एन्कोडिंग(); डीकोडर डीकोड = encodepwd.GetDecoder(); बाइट [] todecode_byte = कनवर्ट करें। FromBase64String (encptpwd.Replace ("+", "")); int charcount = decode.GetCharCount (todecode_byte, 0, todecode_byte.Length); char [] decode_char = नया char [charcount]; डीकोड। गेटचर्स (todecode_byte, 0, todecode_byte.Length, decode_char, 0); decryptpwd = नया स्ट्रिंग (decode_char); वापसी decryptpwd; मैं इस कोशिश – Raheel

उत्तर

5
encryptpwd.Replace("","+") 

वास्तव में क्या आप को बदल रहे हैं? आपने प्रतिस्थापित करने के लिए मूल मान निर्दिष्ट नहीं किया है।

String.Replace दो स्ट्रिंग तर्क oldValue और newValue लेता है। आपने newValue + निर्दिष्ट किया है, हालांकि oldValue के लिए खाली स्ट्रिंग कानूनी नहीं है।

इसलिए यदि आप + कोशिश के साथ एक रिक्त स्थान बदलना चाहते हैं:

encryptpwd.Replace(" ","+"); 

या ठीक इसके विपरीत:

encryptpwd.Replace("+"," "); 

http://msdn.microsoft.com/en-us/library/fk49wtc1.aspx

+0

मैं भी अपने समाधान की कोशिश मैं एक बेस -64 चार सरणी – Raheel

2

समस्या यहाँ है

encryptpwd.Replace("","+") 

आप विधि की जगह पूछ रहे हैं एक से अधिक चरित्र (दूसरा पैरामीटर) के साथ एक खाली स्ट्रिंग (पहले पैरामीटर) को बदलने के लिए कुछ वर्ण या स्ट्रिंग

encryptpwd.Replace(" ","+") 
+0

के लिए कि त्रुटि अमान्य लंबाई पाने के बाद इसे मैं एक बेस -64 चार सरणी – Raheel

5

को बदलने के लिए होना चाहिए। यह कोई समझ नहीं आता है और इसके बारे में शिकायत शिकायत कर रही है।
मुझे लगता है कि आप रिवर्स

byte[] todecode_byte = Convert.FromBase64String(encryptpwd.Replace("+","")); 

इस से एक हिस्सा मुझे यकीन है कि जब आप इनपुट स्ट्रिंग में कुछ बदलने और परिणाम के लिए एक FromBase64String लागू क्या परिणाम होगा नहीं कर रहा हूँ करना चाहते हैं। खैर, यह वास्तव में स्ट्रिंग में मूल रूप से निर्भर करता है, लेकिन निश्चित रूप से (यदि encryptpwd वास्तव में बेस 64 स्ट्रिंग है) तो प्रतिस्थापित करने के लिए कोई स्थान नहीं है। मन में

रखें कि आप Convert.FromBase64String एक सामान्य स्ट्रिंग पारित नहीं हो सकता है, तो आप एक स्ट्रिंग एक आधार 64 स्ट्रिंग है कि जरूरत

What is a base 64 string

उदाहरण के लिए

string pwd = "786"; // The original string 

UnicodeEncoding u = new UnicodeEncoding(); 
byte[] x = u.GetBytes(pwd); // The Unicode bytes of the string above 

// Convert bytes to a base64 string 
string b64 = Convert.ToBase64String(x); 
Console.WriteLine(b64); 

// Go back to the plain text string  
byte[] b = Convert.FromBase64String(b64); 
string result = u.GetString(b); 
Console.WriteLine(result); 

एक अंतिम शब्द कोई (@Slacks) पहले से ही आपको बताता है कि बेस 64 स्ट्रिंग एन्क्रिप्शन तकनीक नहीं है और आपको क्रिप्टिंग पासवर्ड (वे बिल्कुल क्रिप्ट नहीं हैं)

+0

के लिए कि त्रुटि अमान्य लंबाई मिल @Rajev मैं अपने समाधान की कोशिश दे त्रुटि बेस -64 चार सरणी – Raheel

+0

के लिए अमान्य लंबाई असल में जब मैं पासवर्ड 786 दर्ज करता हूं तो यह त्रुटि देता है जब मैं ("+", "") जोड़ने के बाद बेस -64 चार सरणी के लिए अमान्य लंबाई देता हूं तो यह त्रुटि देता है " स्ट्रिंग शून्य लंबाई का नहीं हो सकता है। पैरामीटर का नाम: पुराना वैल्यू " – Raheel

+0

आपको स्ट्रिंग 786 कहां मिलती है? आप मनमाने ढंग से स्ट्रिंग नहीं ले सकते हैं और इसे FromBse64String पर पास कर सकते हैं। आपको बेस 64 स्ट्रिंग की आवश्यकता है। कुछ जो आप कनवर्ट से बाहर निकलते हैं। ToBase64String()। मैं एक उदाहरण जोड़ूंगा – Steve

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

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