La chaîne ne peut pas être de longueur nulle. Nom du paramètre: oldValue
Je suis en train de Déchiffrer le Mot de passe et j'ai bloqué sur ce message d'erreur:
Chaîne ne peut pas être de longueur nulle. Nom du paramètre: oldValue
Gentiment de l'aide sur cette erreur ou me suggérer un autre programme pour le décryptage.
Voici le code complet:
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;
Base64 n'est pas de chiffrement. Vous devez vous hash les mots de passe.
Quelle est la partie de l'erreur de ne pas vous comprendre? Votre code ne fait pas de sens.
voici mon code complet je utiliser ce code à partir d'un site web de la chaîne decryptpwd = string.Vide; UTF8Encoding encodepwd = new UTF8Encoding(); Décodeur Décode = encodepwd.GetDecoder(); byte[] todecode_byte = Convert.FromBase64String(encryptpwd.Remplacer("+","")); int charcount = Décoder.GetCharCount(todecode_byte, 0, todecode_byte.La longueur); char[] decode_char = new char[charcount]; Décoder.GetChars(todecode_byte, 0, todecode_byte.Longueur, decode_char, 0); decryptpwd = new String(decode_char); return decryptpwd;
Quelle est la partie de l'erreur de ne pas vous comprendre? Votre code ne fait pas de sens.
voici mon code complet je utiliser ce code à partir d'un site web de la chaîne decryptpwd = string.Vide; UTF8Encoding encodepwd = new UTF8Encoding(); Décodeur Décode = encodepwd.GetDecoder(); byte[] todecode_byte = Convert.FromBase64String(encryptpwd.Remplacer("+","")); int charcount = Décoder.GetCharCount(todecode_byte, 0, todecode_byte.La longueur); char[] decode_char = new char[charcount]; Décoder.GetChars(todecode_byte, 0, todecode_byte.Longueur, decode_char, 0); decryptpwd = new String(decode_char); return decryptpwd;
OriginalL'auteur Raheel | 2013-05-24
Vous devez vous connecter pour publier un commentaire.
Vous demandez le remplacement de la méthode pour changer une chaîne vide (premier paramètre) avec un caractère plus (deuxième paramètre). Ce ne font pas de sens et de remplacement est de se plaindre à ce sujet.
Je pense que vous voulez faire l'inverse
Une partie de ce que je ne suis pas sûr de ce que le résultat sera quand vous changez quelque chose dans la chaîne d'entrée et d'appliquer un FromBase64String pour le résultat. Eh bien, cela dépend vraiment de ce qui était à l'origine dans la chaîne, mais pour sûr (si
encryptpwd
est vraiment une chaîne Base64) il n'y a pas d'espace pour le remplacer.Gardez à l'esprit que vous ne pouvez pas passer un normal de la chaîne de caractères à Convertir.FromBase64String, vous avez besoin d'une chaîne qui est une base de 64 chaîne
Qu'est ce qu'une base de 64 chaîne
Par exemple
Mot de la fin. Quelqu'un (@Pantalons) déjà vous dit qu'une chaîne base64 n'est pas une technologie de cryptage et vous ne devriez pas l'utiliser pour de cryptage mots de passe (Ils ne sont pas cryptés)
En fait, quand je rentre le mot de passe 786 elle donne l'erreur Invalide la longueur de Base-64 char tableau d'après elle je ajouter ("+","") alors qu'il donne l'erreur "de la Chaîne ne peut pas être de longueur nulle. Nom du paramètre: oldValue"
Où obtenez-vous la chaîne 786? Vous ne pouvez pas prendre une chaîne de caractères arbitraire et la transmettre à la FromBse64String. Vous avez besoin d'un Base64String. Quelque chose que vous sortez de Convertir.ToBase64String(). Je vais ajouter un exemple
Je ne peux que suggérer de faire une recherche sur le sujet de Cryptage et de stocker les mots de passe. L'argument est très large. Regardez cette question lorsque, dans la deuxième partie de ma réponse, je vais expliquer comment crypte et de déchiffrer un texte simple
Merci Steve, la gentillesse de vous
OriginalL'auteur Steve
Quels sont exactement vous remplacer? Vous n'avez pas spécifié de la valeur initiale de l'être remplacé.
String.Replace
prend deux arguments de chaîneoldValue
etnewValue
. Vous avez spécifié le newValue+
cependant une chaîne vide n'est pas légal pour leoldValue
.Par conséquent, si vous souhaitez remplacer un espace vide avec
+
essayer:Ou vice versa:
http://msdn.microsoft.com/en-us/library/fk49wtc1.aspx
OriginalL'auteur Darren
problème est ici
Devrait avoir un peu de caractère ou chaîne de caractères à remplacer
OriginalL'auteur Rajeev Kumar