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.

InformationsquelleAutor Joy | 2015-02-11
Schreibe einen Kommentar