次のコードがあります
問題は、実行しようとすると例外が発生し、これを出力することです:
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 の倍数でなければならないことを理解しています