0

次のコードがあります

問題は、実行しようとすると例外が発生し、これを出力することです:

base 64 ではない文字が含まれているため、エントリは有効な base64 文字列ではありません

これはコードです:

    private static string Encrypt(string plainStr, string completeEncodedKey, int keySize)
    {
        Console.WriteLine("Entro Encrypt");
        RijndaelManaged aesEncryption = new RijndaelManaged();
        aesEncryption.KeySize = keySize;
        aesEncryption.BlockSize = 128;
        aesEncryption.Mode = CipherMode.CBC;
        aesEncryption.Padding = PaddingMode.PKCS7;
        Console.WriteLine(completeEncodedKey);
        aesEncryption.IV = Convert.FromBase64String(ASCIIEncoding.UTF8.GetString(Convert.FromBase64String(completeEncodedKey)).Split(',')[0]);
        aesEncryption.Key = Convert.FromBase64String(ASCIIEncoding.UTF8.GetString(Convert.FromBase64String(completeEncodedKey)).Split(',')[1]);
        byte[] plainText = ASCIIEncoding.UTF8.GetBytes(plainStr);
        ICryptoTransform crypto = aesEncryption.CreateEncryptor();
        Console.WriteLine("Abajo de crypto");
        // The result of the encryption and decryption            
        byte[] cipherText = crypto.TransformFinalBlock(plainText, 0, plainText.Length);
        return Convert.ToBase64String(cipherText);
    }

そして、これはスタックトレースです:

en System.Convert.FromBase64String(String s)  
en cryptograph.Cryptography.Encrypt(String plainStr, String completeEncodedKey,
        Int32 keySize)  
en C:\programacion\cryptograph\cryptograph\cryptograph\Cryptography.cs:línea 65  
en cryptograph.Cryptography.generateKey(String key, String pass)  
en C:\programacion\cryptograph\cryptograph\cryptograph\Cryptography.cs:línea 13  
en cryptograph.cryptograph.Main(String[] args)  
en C:\programacion\cryptograph\cryptograph\cryptograph\cryptograph.cs:línea 21  

編集: completeEncodedKey は、ランダムな文字列です。たとえば、「AAAA」などです。その長さは 4 の倍数でなければならないことを理解しています

4

0 に答える 0