鑑於我設置密鑰長度爲192,當我通過執行以下操作加密一些數據:RijndaelManaged - 設置KeySize屬性的功能是什麼?
static void Main()
{
var querystrings = "dataToEncrypt";
byte[] keyvalue = new byte[] { 241, 205, 121, 123, 109, 246, 247, 103, 31, 225, 167, 220, 247, 119, 247, 119, 78, 125, 127, 167, 156, 213, 230, 250, };
byte[] ivvalue = new byte[] { 194, 177, 79, 213, 87, 46, 213, 189, 243, 169, 32, 13, 217, 62, 34, 170, };
byte[] querystringBytes = Encoding.UTF8.GetBytes(querystrings);
using (RijndaelManaged rijndaelManaged = new RijndaelManaged())
{
rijndaelManaged.BlockSize = 128;
rijndaelManaged.KeySize = 192;
rijndaelManaged.IV = ivvalue;
rijndaelManaged.Key = keyvalue;
rijndaelManaged.Padding = PaddingMode.PKCS7;
rijndaelManaged.Mode = CipherMode.CBC;
using (MemoryStream memoryStream = new MemoryStream())
{
ICryptoTransform transform = rijndaelManaged.CreateEncryptor();
using (CryptoStream cryptoStream = new CryptoStream(memoryStream, transform, CryptoStreamMode.Write))
{
cryptoStream.Write(querystringBytes, 0, querystringBytes.Length);
cryptoStream.FlushFinalBlock();
var output = Convert.ToBase64String(memoryStream.ToArray());
Console.WriteLine($"{output}");
Console.ReadKey();
}
}
}
}
的數據進行加密,我會期望爲IV和加密密鑰長度爲128位和192位分別長。然而,如果我設置的加密密鑰爲128位長(爲了討論,讓使用相同的字節陣列作爲IV),即
static void Main()
{
var querystrings = "dataToEncrypt";
byte[] keyvalue = new byte[] { 194, 177, 79, 213, 87, 46, 213, 189, 243, 169, 32, 13, 217, 62, 34, 170, };
byte[] ivvalue = new byte[] { 194, 177, 79, 213, 87, 46, 213, 189, 243, 169, 32, 13, 217, 62, 34, 170, };
byte[] querystringBytes = Encoding.UTF8.GetBytes(querystrings);
using (RijndaelManaged rijndaelManaged = new RijndaelManaged())
{
rijndaelManaged.BlockSize = 128;
rijndaelManaged.KeySize = 192;
rijndaelManaged.IV = ivvalue;
rijndaelManaged.Key = keyvalue;
rijndaelManaged.Padding = PaddingMode.PKCS7;
rijndaelManaged.Mode = CipherMode.CBC;
using (MemoryStream memoryStream = new MemoryStream())
{
ICryptoTransform transform = rijndaelManaged.CreateEncryptor();
using (CryptoStream cryptoStream = new CryptoStream(memoryStream, transform, CryptoStreamMode.Write))
{
cryptoStream.Write(querystringBytes, 0, querystringBytes.Length);
cryptoStream.FlushFinalBlock();
var output = Convert.ToBase64String(memoryStream.ToArray());
Console.WriteLine($"{output}");
Console.ReadKey();
}
}
}
}
這將仍然加密無一例外。我的問題是:
KeySize在內部執行什麼操作?因爲它在接受128位加密密鑰時,我明確將KeySize設置爲192?爲什麼沒有發生異常?
已更新我的問題,以便更明確地瞭解我的困惑 –
'ICryptoTransform'繼承自'IDisposable',所以這些應該也包含在''using''中。 –
這並不能解釋1. KeySize屬性實際上做了什麼? 2.爲什麼沒有發生異常? –