SymmetricAlgorithm.LegalKeySizes 屬性

定義

取得對稱演算法所支援的金鑰大小,以位元為單位。Gets the key sizes, in bits, that are supported by the symmetric algorithm.

public:
 virtual property cli::array <System::Security::Cryptography::KeySizes ^> ^ LegalKeySizes { cli::array <System::Security::Cryptography::KeySizes ^> ^ get(); };
public virtual System.Security.Cryptography.KeySizes[] LegalKeySizes { get; }
member this.LegalKeySizes : System.Security.Cryptography.KeySizes[]
Public Overridable ReadOnly Property LegalKeySizes As KeySizes()

屬性值

陣列,含有演算法所支援的金鑰大小。An array that contains the key sizes supported by the algorithm.

範例

下列範例顯示對稱演算法的 LegalKeySizes 值。The following example shows the value of LegalKeySizes for the symmetric algorithms.

using System;
using System.Security.Cryptography;
namespace SymmetricAlgo
{
    class Program
    {
        static void Main(string[] args)
        {
            AesManaged aes = new AesManaged();
            Console.WriteLine("AesManaged ");
            KeySizes[] ks = aes.LegalKeySizes;
            foreach (KeySizes k in ks)
            {
                Console.WriteLine("\tLegal min key size = " + k.MinSize);
                Console.WriteLine("\tLegal max key size = " + k.MaxSize);
            }
            ks = aes.LegalBlockSizes;
            foreach (KeySizes k in ks)
            {
                Console.WriteLine("\tLegal min block size = " + k.MinSize);
                Console.WriteLine("\tLegal max block size = " + k.MaxSize);
            }
            DESCryptoServiceProvider des = new DESCryptoServiceProvider();
            Console.WriteLine("DESCryptoServiceProvider ");
            ks = des.LegalKeySizes;
            foreach (KeySizes k in ks)
            {
                Console.WriteLine("\tLegal min key size = " + k.MinSize);
                Console.WriteLine("\tLegal max key size = " + k.MaxSize);
            }
            ks = des.LegalBlockSizes;
            foreach (KeySizes k in ks)
            {
                Console.WriteLine("\tLegal min block size = " + k.MinSize);
                Console.WriteLine("\tLegal max block size = " + k.MaxSize);
            }
            RC2CryptoServiceProvider rc2 = new RC2CryptoServiceProvider();
            Console.WriteLine("RC2CryptoServiceProvider ");
            ks = rc2.LegalKeySizes;
            foreach (KeySizes k in ks)
            {
                Console.WriteLine("\tLegal min key size = " + k.MinSize);
                Console.WriteLine("\tLegal max key size = " + k.MaxSize);
            }
            ks = rc2.LegalBlockSizes;
            foreach (KeySizes k in ks)
            {
                Console.WriteLine("\tLegal min block size = " + k.MinSize);
                Console.WriteLine("\tLegal max block size = " + k.MaxSize);
            }
            RijndaelManaged rij = new RijndaelManaged();
            Console.WriteLine("RijndaelManaged ");
            ks = rij.LegalKeySizes;
            foreach (KeySizes k in ks)
            {
                Console.WriteLine("\tLegal min key size = " + k.MinSize);
                Console.WriteLine("\tLegal max key size = " + k.MaxSize);
            }
            ks = rij.LegalBlockSizes;
            foreach (KeySizes k in ks)
            {
                Console.WriteLine("\tLegal min block size = " + k.MinSize);
                Console.WriteLine("\tLegal max block size = " + k.MaxSize);
            }
            TripleDESCryptoServiceProvider tsp = new TripleDESCryptoServiceProvider();
            Console.WriteLine("TripleDESCryptoServiceProvider ");
            ks = tsp.LegalKeySizes;
            foreach (KeySizes k in ks)
            {
                Console.WriteLine("\tLegal min key size = " + k.MinSize);
                Console.WriteLine("\tLegal max key size = " + k.MaxSize);
            }
            ks = tsp.LegalBlockSizes;
            foreach (KeySizes k in ks)
            {
                Console.WriteLine("\tLegal min block size = " + k.MinSize);
                Console.WriteLine("\tLegal max block size = " + k.MaxSize);
            }
        }
    }
}
//This sample produces the following output:
//AesManaged
//        Legal min key size = 128
//        Legal max key size = 256
//        Legal min block size = 128
//        Legal max block size = 128
//DESCryptoServiceProvider
//        Legal min key size = 64
//        Legal max key size = 64
//        Legal min block size = 64
//        Legal max block size = 64
//RC2CryptoServiceProvider
//        Legal min key size = 40
//        Legal max key size = 128
//        Legal min block size = 64
//        Legal max block size = 64
//RijndaelManaged
//        Legal min key size = 128
//        Legal max key size = 256
//        Legal min block size = 128
//        Legal max block size = 256
//TripleDESCryptoServiceProvider
//        Legal min key size = 128
//        Legal max key size = 192
//        Legal min block size = 64
//        Legal max block size = 64
Imports System.Security.Cryptography


Class Program

    Shared Sub Main(ByVal args() As String)
        Dim aes As New AesManaged()
        Console.WriteLine("AesManaged ")
        Dim ks As KeySizes() = aes.LegalKeySizes
        Dim k As KeySizes
        For Each k In ks
            Console.WriteLine(vbTab + "Legal min key size = " + k.MinSize)
            Console.WriteLine(vbTab + "Legal max key size = " + k.MaxSize)
        Next k
        ks = aes.LegalBlockSizes

        For Each k In ks
            Console.WriteLine(vbTab + "Legal min block size = " + k.MinSize)
            Console.WriteLine(vbTab + "Legal max block size = " + k.MaxSize)
        Next k

        Dim des As New DESCryptoServiceProvider()
        Console.WriteLine("DESCryptoServiceProvider ")
        ks = des.LegalKeySizes

        For Each k In ks
            Console.WriteLine(vbTab + "Legal min key size = " + k.MinSize)
            Console.WriteLine(vbTab + "Legal max key size = " + k.MaxSize)
        Next k
        ks = des.LegalBlockSizes

        For Each k In ks
            Console.WriteLine(vbTab + "Legal min block size = " + k.MinSize)
            Console.WriteLine(vbTab + "Legal max block size = " + k.MaxSize)
        Next k

        Dim rc2 As New RC2CryptoServiceProvider()
        Console.WriteLine("RC2CryptoServiceProvider ")
        ks = rc2.LegalKeySizes

        For Each k In ks
            Console.WriteLine(vbTab + "Legal min key size = " + k.MinSize)
            Console.WriteLine(vbTab + "Legal max key size = " + k.MaxSize)
        Next k
        ks = rc2.LegalBlockSizes

        For Each k In ks
            Console.WriteLine(vbTab + "Legal min block size = " + k.MinSize)
            Console.WriteLine(vbTab + "Legal max block size = " + k.MaxSize)
        Next k

        Dim rij As New RijndaelManaged()
        Console.WriteLine("RijndaelManaged ")
        ks = rij.LegalKeySizes

        For Each k In ks
            Console.WriteLine(vbTab + "Legal min key size = " + k.MinSize)
            Console.WriteLine(vbTab + "Legal max key size = " + k.MaxSize)
        Next k
        ks = rij.LegalBlockSizes

        For Each k In ks
            Console.WriteLine(vbTab + "Legal min block size = " + k.MinSize)
            Console.WriteLine(vbTab + "Legal max block size = " + k.MaxSize)
        Next k

        Dim tsp As New TripleDESCryptoServiceProvider()
        Console.WriteLine("TripleDESCryptoServiceProvider ")
        ks = tsp.LegalKeySizes

        For Each k In ks
            Console.WriteLine(vbTab + "Legal min key size = " + k.MinSize)
            Console.WriteLine(vbTab + "Legal max key size = " + k.MaxSize)
        Next k
        ks = tsp.LegalBlockSizes

        For Each k In ks
            Console.WriteLine(vbTab + "Legal min block size = " + k.MinSize)
            Console.WriteLine(vbTab + "Legal max block size = " + k.MaxSize)
        Next k

    End Sub
End Class
'This sample produces the following output:
'AesManaged
'        Legal min key size = 128
'        Legal max key size = 256
'        Legal min block size = 128
'        Legal max block size = 128
'DESCryptoServiceProvider
'        Legal min key size = 64
'        Legal max key size = 64
'        Legal min block size = 64
'        Legal max block size = 64
'RC2CryptoServiceProvider
'        Legal min key size = 40
'        Legal max key size = 128
'        Legal min block size = 64
'        Legal max block size = 64
'RijndaelManaged
'        Legal min key size = 128
'        Legal max key size = 256
'        Legal min block size = 128
'        Legal max block size = 256
'TripleDESCryptoServiceProvider
'        Legal min key size = 128
'        Legal max key size = 192
'        Legal min block size = 64
'        Legal max block size = 64

備註

對稱演算法僅支援符合此陣列中專案的金鑰大小。The symmetric algorithm supports only key sizes that match an entry in this array.

適用於

另請參閱