IPWorks Encrypt 2020 Delphi Edition

Questions / Feedback?

Encrypt Method

Encrypts the data.

procedure Encrypt();

Remarks

Encrypt will encrypt the specified data. The following properties are applicable:

Input and Output Properties

The component will determine the source and destination of the input and output based on which properties are set.

The order in which the input properties are checked is as follows:

When a valid source is found the search stops. The order in which the output properties are checked is as follows:

When using streams you may need to additionally set CloseInputStreamAfterProcessing or CloseOutputStreamAfterProcessing.

Additional Notes

The Key property must be set to a 256 bit (32 byte) value. This is the only allowed value for ChaCha20. If KeyPassword is set both Key and IV will be automatically generated when Encrypt is called.

The IV should typically be set to a 96 bit (12 byte) value. See the IV property for details on using a 64 bit (8 byte) value. If IV is not set a 96 bit (12 byte) value will automatically be generated by the component when Encrypt is called.

InitialCounter may be set for specific cases where an initial counter of 1 is needed. The default value is 0 and is recommended.

During encryption the Progress event will fire as data is encrypted.

Encrypt Example


Chacha chacha = new Chacha();
chacha.KeyB = new byte[]{ 0xBB, 0x76, 0x17, 0xC9, 0x05, 0x73, 0x4A, 0x8D, 0x59, 0x9D, 0x7B, 0x0D, 0x86, 0x2A, 0x03, 0x82, 0x50, 0x6A, 0x70, 0xFB, 0xA8, 0x56, 0x47, 0x1B, 0x1E, 0x68, 0x0B, 0x2B, 0x34, 0x18, 0x0F, 0xE2 };
chacha.IVB = new byte[] { 0x0D, 0xE4, 0x43, 0x40, 0x29, 0xAD, 0x70, 0x7D, 0x7B, 0x32, 0xB5, 0xC7 };
chacha.InputMessage = "hello chacha!";
chacha.Encrypt();

//chacha.OutputMessageB contains the byte[] of the encrypted data. The above code produces the following encrypted bytes.
// {0x35, 0xBA, 0x31, 0x60, 0x02, 0x77, 0x57, 0x06, 0x5F, 0x6E, 0xE0, 0xD4, 0x76}

AEAD Notes

When encrypting and UseAEAD is True AdditionalAuthData optionally holds data that is authenticated but not encrypted.

After encrypting the message the AuthTag property will be populated. To include the AuthTag in the output set IncludeAuthTag to True.

Encrypt with AEAD Example


Chacha chacha = new Chacha();
chacha.KeyB = new byte[] { 0xBB, 0x76, 0x17, 0xC9, 0x05, 0x73, 0x4A, 0x8D, 0x59, 0x9D, 0x7B, 0x0D, 0x86, 0x2A, 0x03, 0x82, 0x50, 0x6A, 0x70, 0xFB, 0xA8, 0x56, 0x47, 0x1B, 0x1E, 0x68, 0x0B, 0x2B, 0x34, 0x18, 0x0F, 0xE2 };
chacha.IVB = new byte[] { 0x0D, 0xE4, 0x43, 0x40, 0x29, 0xAD, 0x70, 0x7D, 0x7B, 0x32, 0xB5, 0xC7 };

chacha.UseAEAD = true;
chacha.AdditionalAuthData = "my auth data.";
chacha.InputMessage = "hello chacha!";
chacha.Encrypt();

//chacha.OutputMessageB contains the byte[] of the encrypted data. The above code produces the following encrypted bytes:
// {0x67, 0xF5, 0xC7, 0xE4, 0xE6, 0xD6, 0xC2, 0xF4, 0x09, 0xE3, 0x90, 0xF2, 0x65}

//chacha.AuthTagB contains the byte[] of the AuthTag. The above code produces the following authentication tag:
// {0x46, 0x35, 0xFD, 0x33, 0x30, 0x52, 0xAA, 0x6B, 0xBA, 0x32, 0x16, 0xA6, 0x48, 0x12, 0x52, 0x78}

Copyright (c) 2022 /n software inc. - All rights reserved.
IPWorks Encrypt 2020 Delphi Edition - Version 20.0 [Build 8155]