Ungültige Länge für einen Base-64 char-array oder string
Hier sind meine Verschlüsselungs-und Entschlüsselungs-Methoden. Ich habe zwei Datenbanken und kopiert habe ich das verschlüsselte Passwort aus einer Datenbank in eine andere Datenbank. War der code in vb, aber ich konvertiert Sie in C#.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO;
namespace AccountSystem.Class{
class ClEncrDecr
{
private TripleDESCryptoServiceProvider tripleDESCryptoServiceProvider = new TripleDESCryptoServiceProvider();
private byte[] TruncateHash(string key, int length)
{
SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider();
//Hash the Key
byte[] keyBytes = System.Text.Encoding.Unicode.GetBytes(key);
byte[] hash = sha1.ComputeHash(keyBytes);
//truncate or pad the hash
Array.Resize(ref hash, length);
return hash;
}
public ClEncrDecr()
{
string key = "ABCD";
tripleDESCryptoServiceProvider.Key = TruncateHash(key, tripleDESCryptoServiceProvider.KeySize / 8 );
tripleDESCryptoServiceProvider.IV = TruncateHash("", tripleDESCryptoServiceProvider.BlockSize / 8 );
}
public string EncryptData(string plainText)
{
byte[] plaintextBytes = System.Text.Encoding.Unicode.GetBytes(plainText);
MemoryStream ms = new MemoryStream();
CryptoStream encStream = new CryptoStream(ms, tripleDESCryptoServiceProvider.CreateEncryptor(), System.Security.Cryptography.CryptoStreamMode.Write);
encStream.Write(plaintextBytes, 0, plaintextBytes.Length);
encStream.FlushFinalBlock();
return Convert.ToBase64String(ms.ToArray());
}
public string DecryptData(string encryptedtext)
{
byte[] encryptedBytes = Convert.FromBase64String(encryptedtext);
MemoryStream ms = new MemoryStream();
CryptoStream decStream = new CryptoStream(ms, tripleDESCryptoServiceProvider.CreateDecryptor(), CryptoStreamMode.Write);
decStream.Write(encryptedBytes, 0, encryptedBytes.Length);
decStream.FlushFinalBlock();
return System.Text.Encoding.Unicode.GetString(ms.ToArray());
}
}
}
Login-Code :
MessageBox.Show(crypto.DecryptData(obj.password))
Wenn wir rufen DecryptData(string encryptedtext)
es eine Ausnahme wirft, sagen Invalid length for a Base-64 char array or string
. Was kann ich tun?
- Die Verschlüsselungs-Methode, wäre interessant. encryptedtext ist wahrscheinlich nicht eine gültige Base64. Hast du vielleicht ein Beispiel-Wert von encryptedtext.
- was u bedeuten ?? ich verstehe es nicht.
- Die Ausnahme versucht, Ihnen zu sagen, dass der parameter encryptedtext ist nicht gültig Base64String. Könnten Sie ein Beispiel geben Wert für encryptedtext, auf dem die exception geworfen wird? Dies bedeutet, dass der Ausgang der Verschlüsselung Methode, wenn es einen in Ihrer Anwendung generiert wird nicht die richtige Ausgabe (ein Base64String, Beispiel: "YWJjZGVmPT0=")
- eigentlich habe ich 2 Datenbank.und das Passwort kopiert, von einem zum anderen. jetzt bin ich gelten decrypt-Methode. mein Passwort ist InvertAdmin. aber es gibt Fehler aus dieser Zeile, byte[] encryptedBytes = Konvertieren.FromBase64String(encryptedtext); und verschlüsseln Passwort :- dfghfgdfgd667878nnvghv jetzt habe ich eine Frage-code in vb, Sie wandelte ich in c# so verschlüsseln, nicht abhängig von der Anwendung, die bedeutet, dass das Passwort sind gleich und doch anders-2 verschlüsseln von text in andere Anwendung
- dfghfgdfgd667878nnvghv ist nicht gültig Base64String
- wie ?? geben Sie mir Raum ??
- Lassen Sie uns weiter, diese Diskussion im chat.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie den folgenden verschlüsselten Kennwort:
Es kann nicht umgewandelt werden in ein byte-array Base64, weil es keine gültige Base64String. Eine gültige Base64String wäre:
Als Claudio erwähnt im Kommentar, Ihre encryptedtext variable nicht, die eine base64-codierte Zeichenfolge, vielleicht ist es zumindest fehlen padding character(s) am Ende.
Es ist nicht sichtbar aus dem Beispiel, wie es ist, aber vielleicht möchten Sie sich zum Beispiel diese Frage ALSO: Wie muss ich das Kodieren und Dekodieren einer base64-Zeichenfolge?
Über Polsterung: http://en.wikipedia.org/wiki/Base64#Padding