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:
- SetOutputStream
- OutputFile
- OutputMessage: The output data is written to this property if no other destination is specified.
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 must be set to a 192 bit (24 byte) value when Algorithm is set to XSalsa. The IV must be set to a 64 bit (8 byte) value when Algorithm is set to Salsa.
If IV is not set a value will automatically be generated by the component when Encrypt is called.
During encryption the Progress event will fire as data is encrypted.
Encrypt Example
Salsa20 salsa = new Salsa20();
//32 Bytes
salsa.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 };
//24 Bytes
salsa.IVB = new byte[] { 0x0D, 0xE4, 0x43, 0x40, 0x29, 0xAD, 0x70, 0x7D, 0x7B, 0x32, 0xB5, 0xC7, 0x0D, 0xE4, 0x43, 0x40, 0x29, 0xAD, 0x70, 0x7D, 0x7B, 0x32, 0xB5, 0xC7 };
salsa.InputMessage = "hello salsa!";
salsa.Encrypt();
//salsa.OutputMessageB contains the byte[] of the encrypted data. The above code produces the following encrypted bytes.
// { 0x06, 0xF4, 0xD9, 0xB4, 0x67, 0x31, 0x1C, 0x1E, 0x8E, 0xD6, 0xB5, 0x6B }