CryptoProvider.BlockSize Свойство

Определение

Возвращает размер блока шифра в байтах.Gets the cipher block size, in bytes.

public:
 property int BlockSize { int get(); };
public int BlockSize { get; }
member this.BlockSize : int
Public ReadOnly Property BlockSize As Integer

Значение свойства

Int32

Размер блока шифра в байтах.The cipher block size, in bytes. Размер блока по умолчанию для AES (AES) — 8.The default block size for Advanced Encryption Standard (AES) is 8.

Примеры

В следующем примере показано, как использовать BlockSize свойство при преобразовании данных в виде открытого текста в зашифрованные текстовые данные.The following example shows how to use the BlockSize property in converting clear-text data to encrypted-text data.

WriteStatus("   Binding the author's UseLicense and");
WriteStatus("       obtaining the CryptoProvider.");
using (CryptoProvider cryptoProvider =
            authorsUseLicense.Bind(_secureEnv))
{
    WriteStatus("   Writing encrypted content.");
    using (Stream clearTextStream =
                File.OpenRead(contentFile) )
    {
        using (Stream cryptoTextStream =
                    File.OpenWrite(encryptedFile))
        {
            // Write the length of the source content file
            // as the first four bytes of the encrypted file.
            cryptoTextStream.Write(
                BitConverter.GetBytes(clearTextStream.Length),
                0, sizeof(Int32));

            // Allocate clearText buffer.
            byte[] clearTextBlock =
                new byte[cryptoProvider.BlockSize];

            // Encrypt clearText to cryptoText block by block.
            for(;;)
            {   // Read clearText block.
                int readCount = ReliableRead(
                                    clearTextStream,
                                    clearTextBlock, 0 ,
                                    cryptoProvider.BlockSize);
                // readCount of zero is end of data.
                if (readCount == 0)  break; // for

                // Encrypt clearText to cryptoText.
                byte[] cryptoTextBlock =
                    cryptoProvider.Encrypt(clearTextBlock);

                // Write cryptoText block.
                cryptoTextStream.Write(cryptoTextBlock, 0,
                                       cryptoTextBlock.Length);
            }
            WriteStatus("   Closing '" + encryptedFilename + "'.");
        }// end:using (Stream cryptoTextStream =
    }// end:using (Stream clearTextStream =
}// end:using (CryptoProvider cryptoProvider =
WriteStatus("   Done - Content encryption complete.");
WriteStatus("   Binding the author's UseLicense and")
WriteStatus("       obtaining the CryptoProvider.")
Using cryptoProvider As CryptoProvider = authorsUseLicense.Bind(_secureEnv)
    WriteStatus("   Writing encrypted content.")
    Using clearTextStream As Stream = File.OpenRead(contentFile)
        Using cryptoTextStream As Stream = File.OpenWrite(encryptedFile)
            ' Write the length of the source content file
            ' as the first four bytes of the encrypted file.
            Dim expression As Int32
            cryptoTextStream.Write(BitConverter.GetBytes(clearTextStream.Length), 0, Len(expression))

            ' Allocate clearText buffer.
            Dim clearTextBlock(cryptoProvider.BlockSize - 1) As Byte

            ' Encrypt clearText to cryptoText block by block.
            Do
                Dim readCount As Integer = ReliableRead(clearTextStream, clearTextBlock, 0, cryptoProvider.BlockSize)
                ' readCount of zero is end of data.
                If readCount = 0 Then ' for
                    Exit Do
                End If

                ' Encrypt clearText to cryptoText.
                Dim cryptoTextBlock() As Byte = cryptoProvider.Encrypt(clearTextBlock)

                ' Write cryptoText block.
                cryptoTextStream.Write(cryptoTextBlock, 0, cryptoTextBlock.Length)
            Loop
            WriteStatus("   Closing '" & encryptedFilename & "'.")
        End Using ' end:using (Stream cryptoTextStream =
    End Using ' end:using (Stream clearTextStream =
End Using ' end:using (CryptoProvider cryptoProvider =
WriteStatus("   Done - Content encryption complete.")

Комментарии

clearText cipherText Буферы и передаются в Encrypt и Decrypt должны иметь BlockSize длину в n * байт, где n — целое число, большее или равное 1.The clearText and cipherText buffers passed to Encrypt and Decrypt must be n*BlockSize bytes in length, where 'n' is an integer greater than or equal to 1.

Если CanMergeBlocks значение равно false , буферы, передаваемые в, Encrypt должны иметь ту же длину, что и буферы, переданные в Decrypt .If CanMergeBlocks is false, buffers passed to Encrypt must be the same length as the buffers passed to Decrypt.

Если CanMergeBlocks параметр имеет значение true , буферы, передаваемые в, Encrypt могут иметь разную длину из переданных буферов Decrypt (все размеры буфера должны всегда быть кратными BlockSize байтам).If CanMergeBlocks is true, buffers passed to Encrypt can be a different length from the buffers passed to Decrypt (all buffer sizes must still always be a multiple of BlockSize bytes in length).

Значение BlockSize типа, равное 1, указывает, что шифр является потоковым шифром; значение BlockSize из 2 или больше указывает на блочный шифр.A BlockSize of 1 indicates that the cipher is a stream cipher; a BlockSize of 2 or greater indicates a block cipher.

Применяется к